nope/lib/cli/generateDefaultPackageConfig.ts
2020-11-12 17:07:05 +01:00

78 lines
1.9 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));