|
@@ -42,6 +42,11 @@ const SQL_STATEMENTS_PARSER_JSDOC =
|
|
|
' */\n';
|
|
' */\n';
|
|
|
|
|
|
|
|
const JISON_FOLDER = 'desktop/core/src/desktop/js/parse/jison/';
|
|
const JISON_FOLDER = 'desktop/core/src/desktop/js/parse/jison/';
|
|
|
|
|
+const SQL_PARSER_REPOSITORY_PATH = 'desktop/core/src/desktop/js/parse/sql/sqlParserRepository.js';
|
|
|
|
|
+const SYNTAX_PARSER_IMPORT_TEMPLATE =
|
|
|
|
|
+ ' KEY: () => import(/* webpackChunkName: "KEY-parser" */ \'parse/sql/KEY/KEYSyntaxParser\')';
|
|
|
|
|
+const AUTOCOMPLETE_PARSER_IMPORT_TEMPLATE =
|
|
|
|
|
+ ' KEY: () => import(/* webpackChunkName: "KEY-parser" */ \'parse/sql/KEY/KEYAutocompleteParser\')';
|
|
|
|
|
|
|
|
const parserDefinitions = {
|
|
const parserDefinitions = {
|
|
|
globalSearchParser: {
|
|
globalSearchParser: {
|
|
@@ -180,7 +185,6 @@ const generateParser = parserName =>
|
|
|
writeFile(parserConfig.outputFolder + generatedJsFileName, finalContents)
|
|
writeFile(parserConfig.outputFolder + generatedJsFileName, finalContents)
|
|
|
.then(() => {
|
|
.then(() => {
|
|
|
deleteFile(generatedJsFileName);
|
|
deleteFile(generatedJsFileName);
|
|
|
- console.log('Done!\n');
|
|
|
|
|
resolve();
|
|
resolve();
|
|
|
})
|
|
})
|
|
|
.catch(reject);
|
|
.catch(reject);
|
|
@@ -215,6 +219,7 @@ const findParser = (fileIndex, folder, sharedFiles, autocomplete) => {
|
|
|
sources: ['sql/' + folder + '/' + prefix + '_header.jison'].concat(sharedFiles),
|
|
sources: ['sql/' + folder + '/' + prefix + '_header.jison'].concat(sharedFiles),
|
|
|
lexer: 'sql/' + folder + '/sql.jisonlex',
|
|
lexer: 'sql/' + folder + '/sql.jisonlex',
|
|
|
target: 'sql/' + folder + '/' + parserName + '.jison',
|
|
target: 'sql/' + folder + '/' + parserName + '.jison',
|
|
|
|
|
+ sqlParser: autocomplete ? 'AUTOCOMPLETE' : 'SYNTAX',
|
|
|
outputFolder: 'desktop/core/src/desktop/js/parse/sql/' + folder + '/',
|
|
outputFolder: 'desktop/core/src/desktop/js/parse/sql/' + folder + '/',
|
|
|
afterParse: contents =>
|
|
afterParse: contents =>
|
|
|
new Promise(resolve => {
|
|
new Promise(resolve => {
|
|
@@ -344,6 +349,37 @@ identifySqlParsers().then(() => {
|
|
|
console.log(error);
|
|
console.log(error);
|
|
|
console.log('FAIL!');
|
|
console.log('FAIL!');
|
|
|
});
|
|
});
|
|
|
|
|
+ } else {
|
|
|
|
|
+ const autocompParsers = [];
|
|
|
|
|
+ const syntaxParsers = [];
|
|
|
|
|
+ console.log('Updating sqlParserRepository.js...');
|
|
|
|
|
+ Object.keys(parserDefinitions).forEach(key => {
|
|
|
|
|
+ if (parserDefinitions[key].sqlParser === 'AUTOCOMPLETE') {
|
|
|
|
|
+ autocompParsers.push(
|
|
|
|
|
+ AUTOCOMPLETE_PARSER_IMPORT_TEMPLATE.replace(
|
|
|
|
|
+ /KEY/g,
|
|
|
|
|
+ key.replace('AutocompleteParser', '')
|
|
|
|
|
+ )
|
|
|
|
|
+ );
|
|
|
|
|
+ } else if (parserDefinitions[key].sqlParser === 'SYNTAX') {
|
|
|
|
|
+ syntaxParsers.push(
|
|
|
|
|
+ SYNTAX_PARSER_IMPORT_TEMPLATE.replace(/KEY/g, key.replace('SyntaxParser', ''))
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ readFile(SQL_PARSER_REPOSITORY_PATH).then(contents => {
|
|
|
|
|
+ contents = contents.replace(
|
|
|
|
|
+ /const SYNTAX_MODULES = [^}]+}/,
|
|
|
|
|
+ 'const SYNTAX_MODULES = {\n' + syntaxParsers.join(',\n') + '\n}'
|
|
|
|
|
+ );
|
|
|
|
|
+ contents = contents.replace(
|
|
|
|
|
+ /const AUTOCOMPLETE_MODULES = [^}]+}/,
|
|
|
|
|
+ 'const AUTOCOMPLETE_MODULES = {\n' + autocompParsers.join(',\n') + '\n}'
|
|
|
|
|
+ );
|
|
|
|
|
+ writeFile(SQL_PARSER_REPOSITORY_PATH, contents).then(() => {
|
|
|
|
|
+ console.log('Done!\n');
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|