fix(@angular/cli): only add options if theres only one builder configuration

This commit is contained in:
Hans 2018-09-04 17:22:16 -07:00 committed by Alex Eagle
parent 66fbc59767
commit c72c45f9db

View File

@ -5,7 +5,12 @@
* Use of this source code is governed by an MIT-style license that can be * 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 * found in the LICENSE file at https://angular.io/license
*/ */
import { Architect, BuildEvent, TargetSpecifier } from '@angular-devkit/architect'; import {
Architect,
BuildEvent,
BuilderConfiguration,
TargetSpecifier,
} from '@angular-devkit/architect';
import { experimental, json, schema, tags } from '@angular-devkit/core'; import { experimental, json, schema, tags } from '@angular-devkit/core';
import { NodeJsSyncHost, createConsoleLogger } from '@angular-devkit/core/node'; import { NodeJsSyncHost, createConsoleLogger } from '@angular-devkit/core/node';
import { from } from 'rxjs'; import { from } from 'rxjs';
@ -88,11 +93,31 @@ export abstract class ArchitectCommand extends Command<ArchitectCommandOptions>
throw new Error('Cannot determine project or target for Architect command.'); throw new Error('Cannot determine project or target for Architect command.');
} }
const builderConf = this._architect.getBuilderConfiguration(targetSpec); if (this.target) {
const builderDesc = await this._architect.getBuilderDescription(builderConf).toPromise(); // Add options IF there's only one builder of this kind.
const targetOptionArray = await parseJsonSchemaToOptions(this._registry, builderDesc.schema); const projectNames = this.getProjectNamesByTarget(this.target);
const builderConfigurations: BuilderConfiguration[] = [];
for (const projectName of projectNames) {
const targetSpec: TargetSpecifier = this._makeTargetSpecifier(options);
const targetDesc = this._architect.getBuilderConfiguration({
project: projectName,
target: targetSpec.target,
});
this.description.options.push(...targetOptionArray); if (!builderConfigurations.find(b => b.builder === targetDesc.builder)) {
builderConfigurations.push(targetDesc);
}
}
if (builderConfigurations.length == 1) {
const builderConf = builderConfigurations[0];
const builderDesc = await this._architect.getBuilderDescription(builderConf).toPromise();
this.description.options.push(...(
await parseJsonSchemaToOptions(this._registry, builderDesc.schema)
));
}
}
} }
async run(options: ArchitectCommandOptions) { async run(options: ArchitectCommandOptions) {