@ordercloud/oc-codegen
Version:
OpenAPI codegen tool built for the OrderCloud API
61 lines (60 loc) • 3.14 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/* tslint:disable: no-console */
var commander_1 = __importDefault(require("commander"));
var package_json_1 = __importDefault(require("./package.json"));
var index_1 = __importDefault(require("./src/index"));
var chalk_1 = __importDefault(require("chalk"));
var figlet_1 = __importDefault(require("figlet"));
var clear_1 = __importDefault(require("clear"));
// display banner
(0, clear_1.default)();
console.log(chalk_1.default.cyanBright(figlet_1.default.textSync('oc-codegen', { horizontalLayout: 'full' })));
commander_1.default
.version(package_json_1.default.version, '-v, --version')
.description('A codegen tool for the OrderCloud API')
.option('-t, --templates <folder>', '(required) where to locate handlebars templates')
.option('-i, --input-spec <path>', 'path to valid openapi spec v3.0.0+ (defaults to https://api.ordercloud.io/v1/openapi/v3)')
.option('-o, --output <folder>', 'where to write the generated files (defaults to current directory)')
.option('-k, --hooks <filepath>', 'path to your hooks file')
.option('-b, --handlebars-extensions <filepath>', 'path to your handlebars extensions file')
.option('-d, --debug', 'prints the template data that is passed to handlebars')
.option('-c, --clean', 'cleans output directory before writing files to it (default: false)')
.parse(process.argv);
if (!commander_1.default.templates && !commander_1.default.debug) {
console.error(chalk_1.default.bold.red('> Path to handlebars templates folder not provided'));
commander_1.default.help(); // This exits the process
}
// error on unknown commands
commander_1.default.on('command:*', function () {
console.error(chalk_1.default.bold.red('> Invalid command: See list of available commands.'));
commander_1.default.help(); // This exits the process
});
index_1.default
.generate({
templates: commander_1.default.templates,
inputSpec: commander_1.default.inputSpec,
output: commander_1.default.output,
hooks: commander_1.default.hooks,
handlebarsExtensions: commander_1.default.handlebarsExtensions,
debug: commander_1.default.debug,
clean: commander_1.default.clean,
})
.then(function () {
if (!commander_1.default.debug) {
console.log(chalk_1.default.greenBright('Done! ✨'));
console.log(chalk_1.default.yellowBright('Check out your shiny new API at ') +
chalk_1.default.magentaBright(commander_1.default.output) +
chalk_1.default.yellowBright('.'));
}
})
.catch(function (err) {
console.error(chalk_1.default.redBright('Aaww 💩. Something went wrong:'));
console.error(chalk_1.default.redBright(err.stack || err.message));
process.exit(1); // prevent execution of another command after this
});
process.on('unhandledRejection', function (err) { return console.error(err); });