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