diff --git a/generate_single_file.js b/generate_single_file.js index 4d609ba..b908d04 100644 --- a/generate_single_file.js +++ b/generate_single_file.js @@ -37,11 +37,13 @@ class OAO { } } -const copyright_disclaimer = `/* +const copyright_disclaimer = ` +/** * This file is part of the jps-like-websites lib * URL: https://git.labos.goip.de/chris/jpc-like-websites * @copyright by its creator Christian Martin */ + `; let fileOrder = Object.assign(new OAO(), require('./fileOrder.json')); @@ -118,20 +120,45 @@ function resolveDependencyOrder(oao) { } -function appendContent(srcFile, targetFile) { - return fs.readFile(srcFile, 'utf8') - .then(content => { - console.log(`Processing '${srcFile}'`); - console.log(` READ: successfully!`) - console.log(` Attepting to append`); - return fs.appendFile(targetFile, content); - }) - .then(() => { - console.log(` Append/Write: successfully!`); - }) - .catch(error => { - console.error(`Error reading/writing files: ${error.message}`); - }) +/** + * + * @param {string} srcFile path to src file + * @param {string} targetFile path of target file that will contain all scripts + */ +async function appendContent(srcFile, targetFile) { + try { + let content = await fs.readFile(srcFile, 'utf8'); + console.log(`Processing '${srcFile}'`); + console.log(` READ: successfully!`); + console.log(` Adding Copyright disclaimer!`); + console.log(` Attepting to append to default script variant`); + + content = [ + ...copyright_disclaimer.split('\r\n'), + ...content.split('\r\n') + ]; + await fs.appendFile(targetFile, content.join('\r\n')); + + console.log(` Adding export to "modulize"!`); + /** + * Checks weither the given line starts with any of the exportable values. + * @param {string} line + * @returns {boolean} + */ + const isExpStarter = line => ["function", "const", "let", "class"].some(starter => line.startsWith(starter)); + console.log(` Attepting to append to module variant`); + + await fs.appendFile( + targetFileModule, + content + .map(l => (isExpStarter(l) ? "export " : "") + l) + .join('\r\n') + ); + + console.log(` Append/Write: successfully!`); + } catch (error) { + console.error(`Error reading/writing files: ${error.message}`); + } } @@ -150,14 +177,16 @@ let orderedJoinList = fileOrder.keys const targetFile = "./jpc-like-websites.js"; +const targetFileModule = "./jpc-like-websites.module.js"; console.log("(Re-) Creating target file: '" + targetFile + "'"); /* EMPTY (create?) TARGET FILE */ -fs.writeFile(targetFile, "", err => { }) +fs.writeFile(targetFile, "", err => { }); +fs.writeFile(targetFileModule, "", err => { }); orderedJoinList .reduce((prevPromise, filePath) => prevPromise - .then( - ()=>appendContent(filePath, targetFile) - ), Promise.resolve()) + .then( + () => appendContent(filePath, targetFile) + ), Promise.resolve())