piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
49 lines • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupCli = setupCli;
const common_1 = require("./common");
const questionnaire_1 = require("./questionnaire");
const external_1 = require("./external");
let argv = external_1.yargs;
function buildCommand(command) {
if (command.arguments.length > 0) {
return `${command.name} ${command.arguments.join(' ')}`;
}
return command.name;
}
function setupCli(commands) {
for (const command of commands) {
argv = argv.command([buildCommand(command), ...command.alias], command.description, (argv) => {
if (command.survey) {
argv = argv
.boolean('y')
.alias('y', 'defaults')
.describe('y', 'Skips the survey by falling back to the default values.')
.default('y', false);
}
if (typeof command.flags === 'function') {
return command.flags(argv);
}
return argv;
}, (args) => {
const runCommand = () => {
if (command.survey) {
const result = (0, external_1.detailed)(process.argv).argv;
return (0, questionnaire_1.runQuestionnaireFor)(command, result);
}
else {
return Promise.resolve(command.run(args));
}
};
console.log(`${common_1.butterflyIcon} ${common_1.cliName} v${common_1.cliVersion}`);
return runCommand().then(() => process.exit(0), (err) => {
err && !err.logged && console.error(err.message);
console.log(`${common_1.caterpillerIcon} Find detailed descriptions at https://docs.piral.io/code/search`);
process.exit(1);
});
});
}
argv.epilog(`${common_1.zapIcon} For more information, check out the documentation at https://docs.piral.io`).help().strict()
.argv;
}
//# sourceMappingURL=cli.js.map