UNPKG

next-porto-cli

Version:

A cli for next.js to scaffold your application using porto architecture

88 lines (87 loc) 3.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable node/no-extraneous-import */ require("module-alias/register"); const _ = require("lodash"); const core_1 = require("@oclif/core"); const index_1 = require("@generators/index"); const path_1 = require("@helpers/path"); const filesystem_1 = require("@helpers/filesystem"); /** * Container command class */ class Container extends core_1.Command { // * run command async run() { // * let scaffoldPaths = null; // * get user input for flags const { flags } = await this.parse(Container); // * if container is missing in the command flag // * run manual prompt if (!Object.keys(flags).includes('container') || ['', null, undefined].includes(flags.container)) { // * trigger manual prompt // * section const section = await core_1.CliUx.ux.prompt('Enter section name', { default: 'AppSection', required: true, }); // * container const container = await core_1.CliUx.ux.prompt('Enter container name', { required: true, }); // * scaffold paths for container scaffoldPaths = (0, path_1.containerScafffolding)(section, _.capitalize(container)); } // * flags complete if (scaffoldPaths === null) { scaffoldPaths = (0, path_1.containerScafffolding)(flags.section, _.capitalize(flags.container)); } // * check if the container exist if ((0, filesystem_1.fileExist)(scaffoldPaths.containerPath) && flags.force === false) { this.log('Container already exists'); this.exit(1); } // * override exisitng container if ((0, filesystem_1.fileExist)(scaffoldPaths.containerPath) && flags.force) { const deleteExistingContainer = await core_1.CliUx.ux.confirm('This will delete the exisitng container and all of its content, continue?'); // * delete container if (deleteExistingContainer) { await (0, filesystem_1.forceDelete)(scaffoldPaths.containerPath); } else { this.exit(0); } } // * generate container contents from paths (0, index_1.generateFromPaths)(scaffoldPaths); } } exports.default = Container; // * disable variable argument validation Container.strict = false; // * Container.description = 'Create a container'; // * get cli flags Container.flags = { section: core_1.Flags.string({ char: 's', description: 'Name of the application section.', default: 'AppSection', require: true, }), container: core_1.Flags.string({ char: 'c', description: 'Name of the container.', require: true, dependsOn: ['section'], default: '', }), force: core_1.Flags.boolean({ char: 'f', description: 'Override the existing container files', required: false, default: false, }), };