@@ -16,26 +16,23 @@ import 'package:logging/logging.dart';
1616import 'package:path/path.dart' as p;
1717import 'package:watcher/watcher.dart' ;
1818
19- import '../asset/finalized_reader.dart' ;
2019import '../asset/writer.dart' ;
2120import '../asset_graph/graph.dart' ;
2221import '../asset_graph/node.dart' ;
2322import '../asset_graph/optional_output_tracker.dart' ;
24- import '../changes/build_script_updates.dart' ;
2523import '../environment/build_environment.dart' ;
2624import '../logging/build_for_input_logger.dart' ;
2725import '../logging/failure_reporter.dart' ;
2826import '../logging/human_readable_duration.dart' ;
2927import '../logging/logging.dart' ;
30- import '../package_graph/apply_builders.dart' ;
3128import '../package_graph/package_graph.dart' ;
3229import '../package_graph/target_graph.dart' ;
3330import '../performance_tracking/performance_tracking_resolvers.dart' ;
3431import '../util/build_dirs.dart' ;
3532import '../util/constants.dart' ;
36- import 'build_definition.dart' ;
3733import 'build_directory.dart' ;
3834import 'build_result.dart' ;
35+ import 'build_series.dart' ;
3936import 'finalized_assets_view.dart' ;
4037import 'heartbeat.dart' ;
4138import 'input_tracker.dart' ;
@@ -46,103 +43,8 @@ import 'single_step_reader_writer.dart';
4643
4744final _logger = Logger ('Build' );
4845
49- Set <String > _buildPaths (Set <BuildDirectory > buildDirs) =>
50- // The empty string means build everything.
51- buildDirs.any ((b) => b.directory == '' )
52- ? < String > {}
53- : buildDirs.map ((b) => b.directory).toSet ();
54-
55- class BuildImpl {
56- final BuildEnvironment _environment;
57- final AssetGraph assetGraph;
58- final BuildScriptUpdates ? buildScriptUpdates;
59- final BuildOptions _options;
60- final List <BuildPhase > _buildPhases;
61-
62- final FinalizedReader finalizedReader;
63- final AssetReaderWriter _readerWriter;
64- final RunnerAssetWriter _deleteWriter;
65- final ResourceManager _resourceManager = ResourceManager ();
66-
67- Future <void > beforeExit () => _resourceManager.beforeExit ();
68-
69- BuildImpl ._(
70- this ._environment,
71- this .assetGraph,
72- this .buildScriptUpdates,
73- this ._options,
74- this ._buildPhases,
75- this .finalizedReader,
76- ) : _deleteWriter = _environment.writer.copyWith (
77- generatedAssetHider: assetGraph,
78- ),
79- _readerWriter = _environment.reader.copyWith (
80- generatedAssetHider: assetGraph,
81- cache:
82- _options.enableLowResourcesMode
83- ? const PassthroughFilesystemCache ()
84- : InMemoryFilesystemCache (),
85- );
86-
87- Future <BuildResult > run (
88- Map <AssetId , ChangeType > updates, {
89- Set <BuildDirectory > buildDirs = const < BuildDirectory > {},
90- Set <BuildFilter > buildFilters = const {},
91- }) {
92- finalizedReader.reset (_buildPaths (buildDirs), buildFilters);
93- return _SingleBuild (this , buildDirs, buildFilters).run (updates)
94- ..whenComplete (_options.resolvers.reset);
95- }
96-
97- static Future <BuildImpl > create (
98- BuildOptions options,
99- BuildEnvironment environment,
100- List <BuilderApplication > builders,
101- Map <String , Map <String , dynamic >> builderConfigOverrides, {
102- bool isReleaseBuild = false ,
103- }) async {
104- // Don't allow any changes to the generated asset directory after this
105- // point.
106- lockGeneratedOutputDirectory ();
107-
108- var buildPhases = await createBuildPhases (
109- options.targetGraph,
110- builders,
111- builderConfigOverrides,
112- isReleaseBuild,
113- );
114- if (buildPhases.isEmpty) {
115- _logger.severe ('Nothing can be built, yet a build was requested.' );
116- }
117- var buildDefinition = await BuildDefinition .prepareWorkspace (
118- environment,
119- options,
120- buildPhases,
121- );
122- var finalizedReader = FinalizedReader (
123- environment.reader.copyWith (
124- generatedAssetHider: buildDefinition.assetGraph,
125- ),
126- buildDefinition.assetGraph,
127- options.targetGraph,
128- buildPhases,
129- options.packageGraph.root.name,
130- );
131- var build = BuildImpl ._(
132- environment,
133- buildDefinition.assetGraph,
134- buildDefinition.buildScriptUpdates,
135- options,
136- buildPhases,
137- finalizedReader,
138- );
139- return build;
140- }
141- }
142-
143- /// Performs a single build and manages state that only lives for a single
144- /// build.
145- class _SingleBuild {
46+ /// A single build.
47+ class Build {
14648 final AssetGraph _assetGraph;
14749 final Set <BuildFilter > _buildFilters;
14850 final List <BuildPhase > _buildPhases;
@@ -167,26 +69,26 @@ class _SingleBuild {
16769
16870 late final HungActionsHeartbeat hungActionsHeartbeat;
16971
170- _SingleBuild (
171- BuildImpl buildImpl ,
72+ Build (
73+ BuildSeries buildSeries ,
17274 Set <BuildDirectory > buildDirs,
17375 Set <BuildFilter > buildFilters,
174- ) : _assetGraph = buildImpl .assetGraph,
76+ ) : _assetGraph = buildSeries .assetGraph,
17577 _buildFilters = buildFilters,
176- _buildPhases = buildImpl._buildPhases ,
177- _environment = buildImpl._environment ,
178- _packageGraph = buildImpl._options .packageGraph,
179- _targetGraph = buildImpl._options .targetGraph,
78+ _buildPhases = buildSeries.buildPhases ,
79+ _environment = buildSeries.environment ,
80+ _packageGraph = buildSeries.options .packageGraph,
81+ _targetGraph = buildSeries.options .targetGraph,
18082 _performanceTracker =
181- buildImpl._options .trackPerformance
83+ buildSeries.options .trackPerformance
18284 ? BuildPerformanceTracker ()
18385 : BuildPerformanceTracker .noOp (),
184- _readerWriter = buildImpl._readerWriter ,
185- _deleteWriter = buildImpl._deleteWriter ,
186- _resolvers = buildImpl._options .resolvers,
187- _resourceManager = buildImpl._resourceManager ,
86+ _readerWriter = buildSeries.readerWriter ,
87+ _deleteWriter = buildSeries.deleteWriter ,
88+ _resolvers = buildSeries.options .resolvers,
89+ _resourceManager = buildSeries.resourceManager ,
18890 _buildDirs = buildDirs,
189- _logPerformanceDir = buildImpl._options .logPerformanceDir {
91+ _logPerformanceDir = buildSeries.options .logPerformanceDir {
19092 hungActionsHeartbeat = HungActionsHeartbeat (() {
19193 final message = StringBuffer ();
19294 const actionsToLogMax = 5 ;
@@ -211,7 +113,7 @@ class _SingleBuild {
211113 var optionalOutputTracker = OptionalOutputTracker (
212114 _assetGraph,
213115 _targetGraph,
214- _buildPaths (_buildDirs),
116+ BuildDirectory . buildPaths (_buildDirs),
215117 _buildFilters,
216118 _buildPhases,
217119 );
@@ -389,7 +291,7 @@ class _SingleBuild {
389291 .toList (growable: false )) {
390292 if (! shouldBuildForDirs (
391293 node.id,
392- buildDirs: _buildPaths (_buildDirs),
294+ buildDirs: BuildDirectory . buildPaths (_buildDirs),
393295 buildFilters: _buildFilters,
394296 phase: phase,
395297 targetGraph: _targetGraph,
0 commit comments