Skip to content

Commit

Permalink
fix(build): respect browserTarget setting
Browse files Browse the repository at this point in the history
This enables the ability to use a custom builder in the cordova-build
builder.

Fixes #32

Co-authored-by: Adam Clark <adamclerk@gmail.com>
  • Loading branch information
imhoffd and adamclerk committed Dec 19, 2018
1 parent df7aae0 commit 3a9adfa
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions builders/cordova-build/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { BuildEvent, Builder, BuilderConfiguration, BuilderContext } from '@angular-devkit/architect';
import { BrowserBuilder } from '@angular-devkit/build-angular/src/browser';
import { BuildEvent, Builder, BuilderConfiguration, BuilderContext, BuilderDescription } from '@angular-devkit/architect';
import { BrowserBuilderSchema } from '@angular-devkit/build-angular/src/browser/schema';
import { getSystemPath, join, normalize } from '@angular-devkit/core';
import { Observable, of } from 'rxjs';
Expand All @@ -13,10 +12,20 @@ export class CordovaBuildBuilder implements Builder<CordovaBuildBuilderSchema> {
constructor(public context: BuilderContext) {}

run(builderConfig: BuilderConfiguration<CordovaBuildBuilderSchema>): Observable<BuildEvent> {
const browserBuilder = new BrowserBuilder(this.context); // TODO: shouldn't this use `architect.getBuilder()`?
const [ project, target, configuration ] = builderConfig.options.browserTarget.split(':');
const browserTargetSpec = { project, target, configuration, overrides: {} };

let browserConfig = this.context.architect.getBuilderConfiguration<BrowserBuilderSchema>(browserTargetSpec);
let browserDescription: BuilderDescription;

return this.buildBrowserConfig(builderConfig.options).pipe(
concatMap(browserConfig => browserBuilder.run(browserConfig))
return of(null).pipe(// tslint:disable-line:no-null-keyword
concatMap(() => this.context.architect.getBuilderDescription(browserConfig)),
tap(description => browserDescription = description),
concatMap(() => this.context.architect.validateBuilderOptions(browserConfig, browserDescription)),
tap(config => browserConfig = config),
tap(() => this.prepareBrowserConfig(builderConfig.options, browserConfig.options)),
concatMap(() => of(this.context.architect.getBuilder(browserDescription, this.context))),
concatMap(builder => builder.run(browserConfig))
);
}

Expand Down

0 comments on commit 3a9adfa

Please sign in to comment.