88import { experimental , json , logging } from '@angular-devkit/core' ;
99import { EMPTY , Subscription } from 'rxjs' ;
1010import { catchError , first , ignoreElements , map , share , shareReplay , tap } from 'rxjs/operators' ;
11+ import { Analytics , AnalyticsReport , AnalyticsReporter } from '../../core/src/analytics' ;
1112import {
1213 BuilderInfo ,
1314 BuilderInput ,
@@ -31,6 +32,7 @@ export async function scheduleByName(
3132 logger : logging . LoggerApi ,
3233 workspaceRoot : string | Promise < string > ,
3334 currentDirectory : string | Promise < string > ,
35+ analytics ?: Analytics ,
3436 } ,
3537) : Promise < BuilderRun > {
3638 const childLoggerName = options . target ? `{${ targetStringFromTarget ( options . target ) } }` : name ;
@@ -88,6 +90,12 @@ export async function scheduleByName(
8890 shareReplay ( ) ,
8991 ) ;
9092
93+ // If there's an analytics object, take the job channel and report it to the analytics.
94+ if ( options . analytics ) {
95+ const reporter = new AnalyticsReporter ( options . analytics ) ;
96+ job . getChannel < AnalyticsReport > ( 'analytics' )
97+ . subscribe ( report => reporter . report ( report ) ) ;
98+ }
9199 // Start the builder.
92100 output . pipe ( first ( ) ) . subscribe ( {
93101 error ( ) { } ,
@@ -121,6 +129,7 @@ export async function scheduleByTarget(
121129 logger : logging . LoggerApi ,
122130 workspaceRoot : string | Promise < string > ,
123131 currentDirectory : string | Promise < string > ,
132+ analytics ?: Analytics ,
124133 } ,
125134) : Promise < BuilderRun > {
126135 return scheduleByName ( `{${ targetStringFromTarget ( target ) } }` , overrides , {
0 commit comments