mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-17 19:13:34 +08:00
Fix #14986 This PR includes some refactoring to simplify the interaction of the `NodeWorkflow` and the `BaseWorkflow` with the registry. We were registering redundant `addPostTransform`s. Some of them in the constructor of the `BaseWorkflow`, which did not allow us to intercept `addUndefinedDefaults`. Additionally, we were setting the `validateOptionsWithSchema` transform multiple times unnecessarily. An issue left to fix is support for the `--project` option in schematic commands. Currently, `getProjectName` does not know about this option, since `createWorkflow` does not know how to parse the command line arguments. The parsing logic is implemented partially by the concrete implementation of the `SchematicCommand` template method.
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. 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.io/license
|
|
*/
|
|
import { JsonObject } from '@angular-devkit/core';
|
|
import {
|
|
Collection,
|
|
CollectionDescription,
|
|
Engine,
|
|
EngineHost,
|
|
RuleFactory,
|
|
Schematic,
|
|
SchematicDescription,
|
|
TypedSchematicContext,
|
|
} from '../src';
|
|
|
|
|
|
export interface FileSystemCollectionDescription {
|
|
readonly name: string;
|
|
readonly path: string;
|
|
readonly version?: string;
|
|
readonly schematics: { [name: string]: FileSystemSchematicDesc };
|
|
}
|
|
|
|
|
|
export interface FileSystemSchematicJsonDescription {
|
|
readonly aliases?: string[];
|
|
readonly factory: string;
|
|
readonly name: string;
|
|
readonly collection: FileSystemCollectionDescription;
|
|
readonly description: string;
|
|
readonly schema?: string;
|
|
readonly extends?: string;
|
|
}
|
|
|
|
export interface FileSystemSchematicDescription extends FileSystemSchematicJsonDescription {
|
|
// Processed by the EngineHost.
|
|
readonly path: string;
|
|
readonly schemaJson?: JsonObject;
|
|
// Using `any` here is okay because the type isn't resolved when we read this value,
|
|
// but rather when the Engine asks for it.
|
|
readonly factoryFn: RuleFactory<{}>;
|
|
}
|
|
|
|
|
|
/**
|
|
* Used to simplify typings.
|
|
*/
|
|
export declare type FileSystemEngine
|
|
= Engine<FileSystemCollectionDescription, FileSystemSchematicDescription>;
|
|
export declare type FileSystemEngineHost
|
|
= EngineHost<FileSystemCollectionDescription, FileSystemSchematicDescription>;
|
|
export declare type FileSystemCollection
|
|
= Collection<FileSystemCollectionDescription, FileSystemSchematicDescription>;
|
|
export declare type FileSystemSchematic
|
|
= Schematic<FileSystemCollectionDescription, FileSystemSchematicDescription>;
|
|
export declare type FileSystemCollectionDesc
|
|
= CollectionDescription<FileSystemCollectionDescription>;
|
|
export declare type FileSystemSchematicDesc
|
|
= SchematicDescription<FileSystemCollectionDescription, FileSystemSchematicDescription>;
|
|
export declare type FileSystemSchematicContext
|
|
= TypedSchematicContext<FileSystemCollectionDescription, FileSystemSchematicDescription>;
|