tateru-cli
Version:
Simple CLI static site builder tool with Twig.
102 lines (100 loc) • 7.05 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseCLIArgs = void 0;
const fs_1 = require("fs");
const path_1 = __importDefault(require("path"));
const defines_1 = require("../../definition/defines");
function printHelp() {
console.log(`
Simple CLI static site builder tool with Twig.
Usage:
npx tateru-cli [CONFIG FILE] [OPTIONS] [ARGS]
Options:
--env <env>, -e <env> Set build environment (dev or prod). Default is dev.
--page <page>, -p <page> Build only a single page from the config.
--lang <lang>, -l <lang> Set a single language to build.
--help, -h Display help and usage details.
--version, -V Display Tateru CLI version.
`);
}
function parseCLIArgs(basePath) {
const args = process.argv.slice(2);
const options = {
configFile: defines_1.DEFAULT_CONFIG_FILE_NAME,
env: defines_1.ENV_DEVELOPMENT,
};
const packageJsonPath = path_1.default.resolve(basePath, 'package.json');
const packageJson = JSON.parse(fs_1.readFileSync(packageJsonPath, 'utf-8'));
for (let i = 0; i < args.length; i++) {
const arg = args[i];
switch (arg) {
case '--help':
case '-h':
printHelp();
process.exit(0);
break;
case '--version':
case '-V':
console.log(packageJson.version);
process.exit(0);
break;
case '--env':
case '-e':
if (args[i + 1] && !args[i + 1].startsWith('-')) {
options.env = args[i + 1];
i++;
}
else {
console.error('Error: Missing value for --env.');
process.exit(1);
}
break;
case '--page':
case '-p':
if (args[i + 1] && !args[i + 1].startsWith('-')) {
options.page = args[i + 1] || '';
i++;
}
else {
console.error('Error: Missing value for --page.');
process.exit(1);
}
break;
case '--lang':
case '-l':
if (args[i + 1] && !args[i + 1].startsWith('-')) {
options.lang = args[i + 1] || '';
i++;
}
else {
console.error('Error: Missing value for --lang.');
process.exit(1);
}
break;
default:
if (arg.startsWith('-')) {
console.error(`Error: Unknown option "${arg}"\n`);
console.log(`Run "npx tateru-cli --help" to see available options.\n`);
process.exit(1);
}
if (!arg.startsWith('-')) {
options.configFile = arg;
}
break;
}
}
if (process.env.NODE_ENV) {
if (process.env.NODE_ENV === 'development') {
options.env = defines_1.ENV_DEVELOPMENT;
}
if (process.env.NODE_ENV === 'production') {
options.env = defines_1.ENV_PRODUCTION;
}
}
return options;
}
exports.parseCLIArgs = parseCLIArgs;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9zZXJ2aWNlcy9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkJBQWtDO0FBQ2xDLGdEQUF3QjtBQUV4QixzREFJa0M7QUFLbEMsU0FBUyxTQUFTO0lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQzs7Ozs7Ozs7Ozs7O0NBWWYsQ0FBQyxDQUFDO0FBQ0gsQ0FBQztBQVFELFNBQWdCLFlBQVksQ0FBQyxRQUFnQjtJQUN6QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxNQUFNLE9BQU8sR0FBbUI7UUFDNUIsVUFBVSxFQUFFLGtDQUF3QjtRQUNwQyxHQUFHLEVBQUUseUJBQWU7S0FDdkIsQ0FBQztJQUdGLE1BQU0sZUFBZSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQVksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUV2RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsUUFBUSxHQUFHLEVBQUU7WUFDVCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssSUFBSTtnQkFDTCxTQUFTLEVBQUUsQ0FBQztnQkFDWixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixNQUFNO1lBQ1YsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxJQUFJO2dCQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dC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