projen
Version:
CDK for software projects
115 lines • 12 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.discoverTaskCommands = discoverTaskCommands;
const chalk_1 = __importDefault(require("chalk"));
const helpers_1 = require("yargs/helpers");
const logging = __importStar(require("../../logging"));
/**
* Reads .projen/tasks.json and adds CLI commands for all tasks.
* @param ya yargs
*/
function discoverTaskCommands(runtime, ya) {
const tasks = runtime.manifest.tasks ?? {};
for (const task of Object.values(tasks)) {
ya.command(task.name, task.description ?? "", taskCommandHandler(task));
}
function taskCommandHandler(task) {
return async (args) => {
const taskReceivesArgs = task.steps?.reduce((receiveArgs, step) => receiveArgs || (step.receiveArgs ?? false), false);
let taskArgs = [];
if (taskReceivesArgs) {
args.help(false);
args.strict(false);
args.strictCommands(false);
taskArgs = (0, helpers_1.hideBin)(process.argv).slice(1);
}
args.option("inspect", {
alias: "i",
desc: "show all steps in this task",
});
const argv = args.argv;
if (argv.inspect) {
return inspectTask(task.name);
}
else {
try {
await runtime.runTask(task.name, [], taskArgs);
}
catch (e) {
logging.error(e.message ?? e.stack ?? String(e));
process.exit(1);
}
}
};
}
function inspectTask(name, indent = 0) {
const writeln = (s) => console.log(" ".repeat(indent) + s);
const task = runtime.tryFindTask(name);
if (!task) {
throw new Error(`${name}: unable to resolve subtask with name "${name}"`);
}
if (task.description) {
writeln(`${chalk_1.default.underline("description")}: ${task.description}`);
}
for (const [k, v] of Object.entries(task.env ?? {})) {
writeln(`${chalk_1.default.underline("env")}: ${k}=${v}`);
}
for (const step of task.steps ?? []) {
if (step.spawn) {
writeln(`- ${chalk_1.default.bold(step.spawn)}`);
}
else if (step.exec) {
writeln(`- exec: ${step.exec}`);
}
else if (step.execArgs) {
writeln(`- execArgs: ${step.execArgs.join(" ")}`);
}
else if (step.builtin) {
writeln(`- builtin: ${step.builtin}`);
}
if (step.args?.length) {
writeln(` args: ${JSON.stringify(step.args)}`);
}
if (step.spawn) {
inspectTask(step.spawn, indent + 2);
}
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXRhc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvcnVuLXRhc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQSxvREE0RUM7QUF2RkQsa0RBQTBCO0FBRTFCLDJDQUF3QztBQUN4Qyx1REFBeUM7QUFJekM7OztHQUdHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsT0FBb0IsRUFBRSxFQUFjO0lBQ3ZFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFjO1FBQ3hDLE9BQU8sS0FBSyxFQUFFLElBQWdCLEVBQUUsRUFBRTtZQUNoQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUN6QyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLEVBQ2pFLEtBQUssQ0FDTixDQUFDO1lBQ0YsSUFBSSxRQUFRLEdBQTJCLEVBQUUsQ0FBQztZQUMxQyxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsS0FB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RSxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxDQUFDLFdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB0eXBlICogYXMgeWFyZ3MgZnJvbSBcInlhcmdzXCI7XG5pbXBvcnQgeyBoaWRlQmluIH0gZnJvbSBcInlhcmdzL2hlbHBlcnNcIjtcbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSBcIi4uLy4uL2xvZ2dpbmdcIjtcbmltcG9ydCB0eXBlIHsgVGFza1NwZWMgfSBmcm9tIFwiLi4vLi4vdGFzay1tb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBUYXNrUnVudGltZSB9IGZyb20gXCIuLi90YXNrLXJ1bnRpbWVcIjtcblxuLyoqXG4gKiBSZWFkcyAucHJvamVuL3Rhc2tzLmpzb24gYW5kIGFkZHMgQ0xJIGNvbW1hbmRzIGZvciBhbGwgdGFza3MuXG4gKiBAcGFyYW0geWEgeWFyZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc2NvdmVyVGFza0NvbW1hbmRzKHJ1bnRpbWU6IFRhc2tSdW50aW1lLCB5YTogeWFyZ3MuQXJndikge1xuICBjb25zdCB0YXNrcyA9IHJ1bnRpbWUubWFuaWZlc3QudGFza3MgPz8ge307XG4gIGZvciAoY29uc3QgdGFzayBvZiBPYmplY3QudmFsdWVzKHRhc2tzKSkge1xuICAgIHlhLmNvbW1hbmQodGFzay5uYW1lLCB0YXNrLmRlc2NyaXB0aW9uID8/IFwiXCIsIHRhc2tDb21tYW5kSGFuZGxlcih0YXNrKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0YXNrQ29tbWFuZEhhbmRsZXIodGFzazogVGFza1NwZWMpIHtcbiAgICByZXR1cm4gYXN5bmMgKGFyZ3M6IHlhcmdzLkFyZ3YpID0+IHtcbiAgICAgIGNvbnN0IHRhc2tSZWNlaXZlc0FyZ3MgPSB0YXNrLnN0ZXBzPy5yZWR1Y2UoXG4gICAgICAgIChyZWNlaXZlQXJncywgc3RlcCkgPT4gcmVjZWl2ZUFyZ3MgfHwgKHN0ZXAucmVjZWl2ZUFyZ3MgPz8gZmFsc2UpLFxuICAgICAgICBmYWxzZSxcbiAgICAgICk7XG4gICAgICBsZXQgdGFza0FyZ3M6IEFycmF5PHN0cmluZyB8IG51bWJlcj4gPSBbXTtcbiAgICAgIGlmICh0YXNrUmVjZWl2ZXNBcmdzKSB7XG4gICAgICAgIGFyZ3MuaGVscChmYWxzZSk7XG4gICAgICAgIGFyZ3Muc3RyaWN0KGZhbHNlKTtcbiAgICAgICAgYXJncy5zdHJpY3RDb21tYW5kcyhmYWxzZSk7XG4gICAgICAgIHRhc2tBcmdzID0gaGlkZUJpbihwcm9jZXNzLmFyZ3YpLnNsaWNlKDEpO1xuICAgICAgfVxuXG4gICAgICBhcmdzLm9wdGlvbihcImluc3BlY3RcIiwge1xuICAgICAgICBhbGlhczogXCJpXCIsXG4gICAgICAgIGRlc2M6IFwic2hvdyBhbGwgc3RlcHMgaW4gdGhpcyB0YXNrXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYXJndiA9IGFyZ3MuYXJndjtcblxuICAgICAgaWYgKGFyZ3YuaW5zcGVjdCkge1xuICAgICAgICByZXR1cm4gaW5zcGVjdFRhc2sodGFzay5uYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgcnVudGltZS5ydW5UYXNrKHRhc2submFtZSwgW10sIHRhc2tBcmdzKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgbG9nZ2luZy5lcnJvcihlLm1lc3NhZ2UgPz8gZS5zdGFjayA/PyBTdHJpbmcoZSkpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBpbnNwZWN0VGFzayhuYW1lOiBzdHJpbmcsIGluZGVudCA9IDApIHtcbiAgICBjb25zdCB3cml0ZWxuID0gKHM6IHN0cmluZykgPT4gY29uc29sZS5sb2coXCIgXCIucmVwZWF0KGluZGVudCkgKyBzKTtcblxuICAgIGNvbnN0IHRhc2sgPSBydW50aW1lLnRyeUZpbmRUYXNrKG5hbWUpO1xuICAgIGlmICghdGFzaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke25hbWV9OiB1bmFibGUgdG8gcmVzb2x2ZSBzdWJ0YXNrIHdpdGggbmFtZSBcIiR7bmFtZX1cImApO1xuICAgIH1cblxuICAgIGlmICh0YXNrLmRlc2NyaXB0aW9uKSB7XG4gICAgICB3cml0ZWxuKGAke2NoYWxrLnVuZGVybGluZShcImRlc2NyaXB0aW9uXCIpfTogJHt0YXNrLmRlc2NyaXB0aW9ufWApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHRhc2suZW52ID8/IHt9KSkge1xuICAgICAgd3JpdGVsbihgJHtjaGFsay51bmRlcmxpbmUoXCJlbnZcIil9OiAke2t9PSR7dn1gKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHN0ZXAgb2YgdGFzay5zdGVwcyA/PyBbXSkge1xuICAgICAgaWYgKHN0ZXAuc3Bhd24pIHtcbiAgICAgICAgd3JpdGVsbihgLSAke2NoYWxrLmJvbGQoc3RlcC5zcGF3bil9YCk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAuZXhlYykge1xuICAgICAgICB3cml0ZWxuKGAtIGV4ZWM6ICR7c3RlcC5leGVjfWApO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLmV4ZWNBcmdzKSB7XG4gICAgICAgIHdyaXRlbG4oYC0gZXhlY0FyZ3M6ICR7c3RlcC5leGVjQXJncy5qb2luKFwiIFwiKX1gKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RlcC5idWlsdGluKSB7XG4gICAgICAgIHdyaXRlbG4oYC0gYnVpbHRpbjogJHtzdGVwLmJ1aWx0aW59YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwLmFyZ3M/Lmxlbmd0aCkge1xuICAgICAgICB3cml0ZWxuKGAgIGFyZ3M6ICR7SlNPTi5zdHJpbmdpZnkoc3RlcC5hcmdzKX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXAuc3Bhd24pIHtcbiAgICAgICAgaW5zcGVjdFRhc2soc3RlcC5zcGF3biwgaW5kZW50ICsgMik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=