UNPKG

@angular/cli

Version:
75 lines (74 loc) 3.42 kB
"use strict"; /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ Object.defineProperty(exports, "__esModule", { value: true }); const node_path_1 = require("node:path"); const command_module_1 = require("../../command-builder/command-module"); const schematics_command_module_1 = require("../../command-builder/schematics-command-module"); const version_1 = require("../../utilities/version"); const command_config_1 = require("../command-config"); class NewCommandModule extends schematics_command_module_1.SchematicsCommandModule { schematicName = 'ng-new'; scope = command_module_1.CommandScope.Out; allowPrivateSchematics = true; command = 'new [name]'; aliases = command_config_1.RootCommands['new'].aliases; describe = 'Creates a new Angular workspace.'; longDescriptionPath = (0, node_path_1.join)(__dirname, 'long-description.md'); async builder(argv) { const localYargs = (await super.builder(argv)).option('collection', { alias: 'c', describe: 'A collection of schematics to use in generating the initial application.', type: 'string', }); const { options: { collection: collectionNameFromArgs }, } = this.context.args; const collectionName = typeof collectionNameFromArgs === 'string' ? collectionNameFromArgs : await this.getCollectionFromConfig(); const workflow = this.getOrCreateWorkflowForBuilder(collectionName); const collection = workflow.engine.createCollection(collectionName); const options = await this.getSchematicOptions(collection, this.schematicName, workflow); return this.addSchemaOptionsToCommand(localYargs, options); } async run(options) { // Register the version of the CLI in the registry. const collectionName = options.collection ?? (await this.getCollectionFromConfig()); const { dryRun, force, interactive, defaults, collection, ...schematicOptions } = options; const workflow = await this.getOrCreateWorkflowForExecution(collectionName, { dryRun, force, interactive, defaults, }); workflow.registry.addSmartDefaultProvider('ng-cli-version', () => version_1.VERSION.full); return this.runSchematic({ collectionName, schematicName: this.schematicName, schematicOptions, executionOptions: { dryRun, force, interactive, defaults, }, }); } /** Find a collection from config that has an `ng-new` schematic. */ async getCollectionFromConfig() { for (const collectionName of await this.getSchematicCollections()) { const workflow = this.getOrCreateWorkflowForBuilder(collectionName); const collection = workflow.engine.createCollection(collectionName); const schematicsInCollection = collection.description.schematics; if (Object.keys(schematicsInCollection).includes(this.schematicName)) { return collectionName; } } return schematics_command_module_1.DEFAULT_SCHEMATICS_COLLECTION; } } exports.default = NewCommandModule;