nope/lib/cli/generateDefaultPackageConfig.ts
2020-11-23 07:09:31 +01:00

78 lines
2.0 KiB
TypeScript

/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2020-11-11 13:27:58
* @modify date 2020-11-12 13:49:17
* @desc [description]
*/
import { ArgumentParser } from "argparse";
import { readFile } from "fs/promises";
import { writeDefaultConfig } from "../loader/loadPackages";
import { getNopeLogger } from "../logger/getLogger";
// Define the Main Function.
// This function is used as cli tool.
const main = async function () {
const parser = new ArgumentParser({
version: "1.0.0",
addHelp: true,
description: "Command Line interface, determines the available Packages."
});
let opts: {
modules: string,
};
try{
// Try to read in the default config file.
opts = JSON.parse(await readFile("./nopeconfig.json", {
encoding: "utf-8"
}));
} catch (error) {
opts = {} as any;
}
parser.addArgument(
["-f", "--file"],
{
help: "File containing containing the package definitions.",
defaultValue: "./config/settings.json",
type: "string",
dest: "file"
}
);
parser.addArgument(
["-s", "--search"],
{
help: "Directory containing the Modules.",
defaultValue: "not-provided",
type: "string",
dest: "modules"
}
);
const args = parser.parseArgs();
if (args.modules != "not-provided"){
opts.modules = args.modules;
}
// Define a Logger
const logger = getNopeLogger("Setup-CLI");
try {
logger.info("Scanning " + opts.modules);
// Write the Config.
await writeDefaultConfig(opts.modules, args.file);
// Inform the user.
logger.info("Created Package-File at " + args.file);
} catch (error) {
logger.error("Failed generating the Config");
logger.error(error);
}
};
main().catch(e => console.error(e));