mirror of
https://github.com/gchq/CyberChef.git
synced 2025-04-21 23:36:16 -04:00
60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
/**
|
|
* This script automatically generates src/core/operations/index.mjs, containing
|
|
* imports for all operations in src/core/operations.
|
|
*
|
|
* @author n1474335 [n1474335@gmail.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";
|
|
|
|
const dir = path.join(process.cwd() + "/src/core/config/");
|
|
if (!fs.existsSync(dir)) {
|
|
console.log("\nCWD: " + process.cwd());
|
|
console.log("Error: generateOpsIndex.mjs should be run from the project root");
|
|
console.log("Example> node --experimental-modules src/core/config/scripts/generateOpsIndex.mjs");
|
|
process.exit(1);
|
|
}
|
|
|
|
// Find all operation files
|
|
const opObjs = [];
|
|
fs.readdirSync(path.join(dir, "../operations")).forEach(file => {
|
|
if (!file.endsWith(".mjs") || file === "index.mjs") return;
|
|
opObjs.push(file.split(".mjs")[0]);
|
|
});
|
|
|
|
// Construct index file
|
|
let code = `/**
|
|
* THIS FILE IS AUTOMATICALLY GENERATED BY src/core/config/scripts/generateOpsIndex.mjs
|
|
*
|
|
* @author n1474335 [n1474335@gmail.com]
|
|
* @copyright Crown Copyright ${new Date().getUTCFullYear()}
|
|
* @license Apache-2.0
|
|
*/
|
|
`;
|
|
|
|
opObjs.forEach(obj => {
|
|
code += `import ${obj} from "./${obj}.mjs";\n`;
|
|
});
|
|
|
|
code += `
|
|
export {
|
|
`;
|
|
|
|
opObjs.forEach(obj => {
|
|
code += ` ${obj},\n`;
|
|
});
|
|
|
|
code += "};\n";
|
|
|
|
// Write file
|
|
fs.writeFileSync(
|
|
path.join(dir, "../operations/index.mjs"),
|
|
code
|
|
);
|
|
console.log("Written operation index.");
|