@nestjs/cli
Version:
Nest - modern, fast, powerful node.js web framework (@cli)
67 lines (66 loc) • 3.48 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const schematics_1 = require("../lib/schematics");
const abstract_command_1 = require("./abstract.command");
class NewCommand extends abstract_command_1.AbstractCommand {
load(program) {
program
.command('new [name]')
.alias('n')
.description('Generate Nest application.')
.option('--directory [directory]', 'Specify the destination directory')
.option('-d, --dry-run', 'Report actions that would be performed without writing out results.')
.option('-g, --skip-git', 'Skip git repository initialization.')
.option('-s, --skip-install', 'Skip package installation.')
.option('-p, --package-manager [package-manager]', 'Specify package manager.')
.option('-l, --language [language]', 'Programming language to be used (TypeScript or JavaScript).')
.option('-c, --collection [collectionName]', 'Schematics collection to use.')
.action((name, command) => __awaiter(this, void 0, void 0, function* () {
const options = [];
const availableLanguages = ['js', 'ts', 'javascript', 'typescript'];
options.push({ name: 'directory', value: command.directory });
options.push({ name: 'dry-run', value: !!command.dryRun });
options.push({ name: 'skip-git', value: !!command.skipGit });
options.push({ name: 'skip-install', value: !!command.skipInstall });
options.push({
name: 'package-manager',
value: command.packageManager,
});
if (!!command.language) {
const langMatch = availableLanguages.includes(command.language.toLowerCase());
if (!langMatch) {
throw new Error(`Invalid language "${command.language}" selected. Available languages are "typescript" or "javascript"`);
}
switch (command.language) {
case 'javascript':
command.language = 'js';
break;
case 'typescript':
command.language = 'ts';
break;
}
}
options.push({
name: 'language',
value: !!command.language ? command.language : 'ts',
});
options.push({
name: 'collection',
value: command.collection || schematics_1.Collection.NESTJS,
});
const inputs = [];
inputs.push({ name: 'name', value: name });
yield this.action.handle(inputs, options);
}));
}
}
exports.NewCommand = NewCommand;