11// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file 
22// for details. All rights reserved. Use of this source code is governed by a 
33// BSD-style license that can be found in the LICENSE file. 
4- import  'dart:isolate' ;
54
6- import  'package:build_runner_core/build_runner_core.dart' ;
75// ignore: implementation_imports 
8- import  'package:build_runner_core/src/generate/build_step_impl.dart' ;
9- // ignore: implementation_imports 
10- import  'package:build_runner_core/src/generate/single_step_reader_writer.dart' ;
6+ import  'package:build_runner_core/src/generate/run_builder.dart' 
7+     as  build_runner_core;
118import  'package:logging/logging.dart' ;
129import  'package:package_config/package_config.dart' ;
1310
@@ -17,24 +14,17 @@ import '../asset/reader.dart';
1714import  '../asset/writer.dart' ;
1815import  '../builder/build_step.dart' ;
1916import  '../builder/builder.dart' ;
20- import  '../builder/logging.dart' ;
2117import  '../resource/resource.dart' ;
22- import  'expected_outputs.dart' ;
2318
24- /// Run [builder]  with each asset in [inputs]  as the primary input. 
25- /// 
26- /// Builds for all inputs are run asynchronously and ordering is not guaranteed. 
27- /// The [log]  instance inside the builds will be scoped to [logger]  which is 
28- /// defaulted to a [Logger]  name 'runBuilder'. 
29- /// 
30- /// If a [resourceManager]  is provided it will be used and it will not be 
31- /// automatically disposed of (its up to the caller to dispose of it later). If 
32- /// one is not provided then one will be created and disposed at the end of 
33- /// this function call. 
34- /// 
35- /// If [reportUnusedAssetsForInput]  is provided then all calls to 
36- /// `BuildStep.reportUnusedAssets`  in [builder]  will be forwarded to this 
37- /// function with the associated primary input. 
19+ @Deprecated (''' 
20+ This method has moved to `package:build_runner_core` and will be 
21+ deleted from `package:build`. 
22+ 
23+ The currently supported ways to run builders are using `build_runner` 
24+ on the command line or `build_test` in tests. If you need ongoing 
25+ support for a different way to run builders please get in touch at 
26+ https://github.com/dart-lang/build/discussions. 
27+ ''' )
3828Future <void > runBuilder (
3929  Builder  builder,
4030  Iterable <AssetId > inputs,
@@ -43,95 +33,19 @@ Future<void> runBuilder(
4333  Resolvers ?  resolvers, {
4434  Logger ?  logger,
4535  ResourceManager ?  resourceManager,
46-   StageTracker  stageTracker  =   NoOpStageTracker .instance ,
36+   StageTracker ?  stageTracker,
4737  void  Function (AssetId  input, Iterable <AssetId > assets)? 
4838  reportUnusedAssetsForInput,
4939  PackageConfig ?  packageConfig,
50- }) async  {
51-   var  shouldDisposeResourceManager =  resourceManager ==  null ;
52-   final  resources =  resourceManager ??  ResourceManager ();
53-   logger ?? =  Logger ('runBuilder' );
54- 
55-   PackageConfig ?  transformedConfig;
56- 
57-   Future <PackageConfig > loadPackageConfig () async  {
58-     if  (transformedConfig !=  null ) return  transformedConfig! ;
59- 
60-     var  config =  packageConfig;
61-     if  (config ==  null ) {
62-       final  uri =  await  Isolate .packageConfig;
63- 
64-       if  (uri ==  null ) {
65-         throw  UnsupportedError (
66-           'Isolate running the build does not have a package config and no ' 
67-           'fallback has been provided' ,
68-         );
69-       }
70- 
71-       config =  await  loadPackageConfigUri (uri);
72-     }
73- 
74-     return  transformedConfig =  config.transformToAssetUris ();
75-   }
76- 
77-   //TODO(nbosch) check overlapping outputs? 
78-   Future <void > buildForInput (AssetId  input) async  {
79-     var  outputs =  expectedOutputs (builder, input);
80-     if  (outputs.isEmpty) return ;
81-     var  buildStep =  BuildStepImpl (
82-       input,
83-       outputs,
84-       // If there a build running, `assetReader` and `assetWriter` are already a 
85-       // `SingleStepReaderWriter` instance integrated with the build; the `from` 
86-       // factory just passes it through. 
87-       // 
88-       // If there is no build running, this creates a fake build step. 
89-       SingleStepReaderWriter .from (reader:  assetReader, writer:  assetWriter),
90-       resolvers,
91-       resources,
92-       loadPackageConfig,
93-       stageTracker:  stageTracker,
94-       reportUnusedAssets: 
95-           reportUnusedAssetsForInput ==  null 
96-               ?  null 
97-               :  (assets) =>  reportUnusedAssetsForInput (input, assets),
98-     );
99-     try  {
100-       await  builder.build (buildStep);
101-     } finally  {
102-       await  buildStep.complete ();
103-     }
104-   }
105- 
106-   await  BuildLogLogger .scopeLogAsync (
107-     () =>  Future .wait (inputs.map (buildForInput)),
108-     logger,
109-   );
110- 
111-   if  (shouldDisposeResourceManager) {
112-     await  resources.disposeAll ();
113-     await  resources.beforeExit ();
114-   }
115- }
116- 
117- extension  on  Package  {
118-   static  final  _lib =  Uri .parse ('lib/' );
119- 
120-   Package  transformToAssetUris () {
121-     return  Package (
122-       name,
123-       Uri (scheme:  'asset' , pathSegments:  [name, '' ]),
124-       packageUriRoot:  _lib,
125-       extraData:  extraData,
126-       languageVersion:  languageVersion,
127-     );
128-   }
129- }
130- 
131- extension  on  PackageConfig  {
132-   PackageConfig  transformToAssetUris () {
133-     return  PackageConfig ([
134-       for  (final  package in  packages) package.transformToAssetUris (),
135-     ], extraData:  extraData);
136-   }
137- }
40+ }) =>  build_runner_core.runBuilder (
41+   builder,
42+   inputs,
43+   assetReader,
44+   assetWriter,
45+   resolvers,
46+   logger:  logger,
47+   resourceManager:  resourceManager,
48+   stageTracker:  stageTracker,
49+   reportUnusedAssetsForInput:  reportUnusedAssetsForInput,
50+   packageConfig:  packageConfig,
51+ );
0 commit comments