glass-app-manager
Version:
Informatica's Glass Framework CLI for bootstrapping
68 lines (56 loc) • 2.05 kB
JavaScript
;
const chalk = require("chalk");
const program = require("commander");
const { version } = require("../../package");
const getDefaultLibraryParams = require("./get-default-library-params");
const createLibrary = require("./create-library");
const promptLibraryParams = require("./prompt-library-params");
module.exports = async () => {
const defaults = await getDefaultLibraryParams();
program
.name("glass-app-manager")
.version(version)
.usage("[options] [package-name]")
.option("-d, --desc <string>", "package description")
.option("-l, --license <string>", "package license", defaults.license)
.option(
"-m, --manager <npm|yarn>",
"package manager to use",
/^(npm|yarn)$/,
defaults.manager
)
.option(
"-s, --skip-prompts",
"skip all prompts (must provide package-name via cli)"
)
.parse(process.argv);
const opts = {
description: program.desc,
manager: program.manager,
template: program.template,
templatePath: program.templatePath,
samplePath: program.samplePath,
skipPrompts: program.skipPrompts
};
Object.keys(opts).forEach(key => {
if (!opts[key] && defaults[key]) {
opts[key] = defaults[key];
}
});
if (program.args.length === 1) {
opts.name = program.args[0];
} else if (program.args.length > 1) {
console.error("invalid arguments");
program.help();
process.exit(1);
}
const params = await promptLibraryParams(opts);
const dest = await createLibrary(params);
console.log(`Your module has been created at ${dest}. To get started, in one tab, run: $ ${chalk.cyan(`cd ${params.shortName} && ${params.manager} start`)} `);
return dest;
};
module.exports().catch(err => {
console.error(err);
process.exit(1);
});