diff --git a/Gruntfile.js b/Gruntfile.js index dd890982..1bf2af3f 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -389,15 +389,8 @@ module.exports = function (grunt) { command: "node build/prod/sitemap.js > build/prod/sitemap.xml" }, generateConfig: { - command: [ - "echo '\n--- Regenerating config files. ---'", - "mkdir -p src/core/config/modules", - "echo 'export default {};\n' > src/core/config/modules/OpModules.mjs", - "echo '[]\n' > src/core/config/OperationConfig.json", - "node --experimental-modules --no-warnings --no-deprecation src/core/config/scripts/generateOpsIndex.mjs", - "node --experimental-modules --no-warnings --no-deprecation src/core/config/scripts/generateConfig.mjs", - "echo '--- Config scripts finished. ---\n'" - ].join(";") + command: "node --experimental-modules --no-warnings --no-deprecation src/core/config/scripts/generateDefaults.mjs", + stdout: true }, opTests: { command: "node --experimental-modules --no-warnings --no-deprecation tests/operations/index.mjs" diff --git a/src/core/config/scripts/generateDefaults.mjs b/src/core/config/scripts/generateDefaults.mjs new file mode 100644 index 00000000..1ace324b --- /dev/null +++ b/src/core/config/scripts/generateDefaults.mjs @@ -0,0 +1,49 @@ +/** + * This script automatically generates OperationConfig.json, containing metadata + * for each operation in the src/core/operations directory. + * It also generates modules in the src/core/config/modules directory to separate + * out operations into logical collections. + * + * @author David B Heise [david@heiseink.com] + * @copyright Crown Copyright 2018 + * @license Apache-2.0 + */ + +/*eslint no-console: ["off"] */ + +import path from "path"; +import fs from "fs"; +import process from "process"; +import childProcess from "child_process" + + +const mkdirSync = function (dirPath) { + try { + fs.mkdirSync(dirPath) + } catch (err) { + if (err.code !== 'EEXIST') throw err + } +} + +const mkdirpSync = function (dirPath) { + const parts = dirPath.split(path.sep) + for (let i = 1; i <= parts.length; i++) { + mkdirSync(path.join.apply(null, parts.slice(0, i))) + } +} + + +const dir = process.cwd(); + +//Create the Destination Folder +mkdirpSync(path.join(dir, "src/core/config/modules")) + +//Create the default files +fs.writeFileSync(path.join(dir, "src/core/config/modules/OpModules.mjs"), "export default{};\n") +fs.writeFileSync(path.join(dir, "src/core/config/OperationConfig.json"), "[]\n") + +//Run the generateOpsIndex.mjs file +childProcess.fork(path.join(dir, "src/core/config/scripts/generateOpsIndex.mjs"), { execArgv: ["--experimental-modules","--no-warnings","--no-deprecation"]}) + +//Run the generateConfig.mjs file +childProcess.fork(path.join(dir, "src/core/config/scripts/generateConfig.mjs"), { execArgv: ["--experimental-modules","--no-warnings","--no-deprecation"]})