Skip to content

Commit 224dd81

Browse files
authored
Split out _SingleBuild as Build and BuildImpl as BuildSeries. (#3924)
* Split out `_SingleBuild` as `Build` and `BuildImpl` as `BuildSeries`. * Move `AssetTracker` to its own file. * Add `AssetGraphLoader` and `BuildPhases`.
1 parent cc083f3 commit 224dd81

28 files changed

+782
-587
lines changed

build/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ dependencies:
1111
analyzer: '>=6.9.0 <8.0.0'
1212
async: ^2.5.0
1313
build_runner_core: ^9.0.0-wip
14+
built_collection: ^5.1.1
1415
convert: ^3.0.0
1516
crypto: ^3.0.0
1617
glob: ^2.0.0

build_runner/lib/src/daemon/change_providers.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'package:build_daemon/change_provider.dart';
88
// ignore: implementation_imports
99
import 'package:build_runner_core/src/asset_graph/graph.dart';
1010
// ignore: implementation_imports
11-
import 'package:build_runner_core/src/generate/build_definition.dart';
11+
import 'package:build_runner_core/src/generate/asset_tracker.dart';
1212
import 'package:watcher/watcher.dart' show WatchEvent;
1313

1414
/// Continually updates the [changes] stream as watch events are seen on the

build_runner/lib/src/daemon/daemon_builder.dart

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import 'package:build_runner_core/build_runner_core.dart'
1717
import 'package:build_runner_core/build_runner_core.dart'
1818
hide BuildResult, BuildStatus;
1919
// ignore: implementation_imports
20-
import 'package:build_runner_core/src/generate/build_definition.dart';
20+
import 'package:build_runner_core/src/generate/asset_tracker.dart';
2121
// ignore: implementation_imports
22-
import 'package:build_runner_core/src/generate/build_impl.dart';
22+
import 'package:build_runner_core/src/generate/build_series.dart';
2323
import 'package:stream_transform/stream_transform.dart';
2424
import 'package:watcher/watcher.dart';
2525

@@ -36,7 +36,7 @@ import 'change_providers.dart';
3636
class BuildRunnerDaemonBuilder implements DaemonBuilder {
3737
final _buildResults = StreamController<BuildResults>();
3838

39-
final BuildImpl _builder;
39+
final BuildSeries _buildSeries;
4040
final BuildOptions _buildOptions;
4141
final StreamController<ServerLog> _outputStreamController;
4242
final ChangeProvider changeProvider;
@@ -47,7 +47,7 @@ class BuildRunnerDaemonBuilder implements DaemonBuilder {
4747
final Stream<ServerLog> logs;
4848

4949
BuildRunnerDaemonBuilder._(
50-
this._builder,
50+
this._buildSeries,
5151
this._buildOptions,
5252
this._outputStreamController,
5353
this.changeProvider,
@@ -60,7 +60,7 @@ class BuildRunnerDaemonBuilder implements DaemonBuilder {
6060
@override
6161
Stream<BuildResults> get builds => _buildResults.stream;
6262

63-
FinalizedReader get reader => _builder.finalizedReader;
63+
FinalizedReader get reader => _buildSeries.finalizedReader;
6464

6565
final _buildScriptUpdateCompleter = Completer<void>();
6666
Future<void> get buildScriptUpdated => _buildScriptUpdateCompleter.future;
@@ -79,7 +79,7 @@ class BuildRunnerDaemonBuilder implements DaemonBuilder {
7979
.toList();
8080

8181
if (!_buildOptions.skipBuildScriptCheck &&
82-
_builder.buildScriptUpdates!.hasBeenUpdated(
82+
_buildSeries.buildScriptUpdates!.hasBeenUpdated(
8383
changes.map<AssetId>((change) => change.id).toSet(),
8484
)) {
8585
if (!_buildScriptUpdateCompleter.isCompleted) {
@@ -131,7 +131,7 @@ class BuildRunnerDaemonBuilder implements DaemonBuilder {
131131

132132
try {
133133
var mergedChanges = collectChanges([changes]);
134-
var result = await _builder.run(
134+
var result = await _buildSeries.run(
135135
mergedChanges,
136136
buildDirs: buildDirs,
137137
buildFilters: buildFilters,
@@ -190,7 +190,7 @@ class BuildRunnerDaemonBuilder implements DaemonBuilder {
190190

191191
@override
192192
Future<void> stop() async {
193-
await _builder.beforeExit();
193+
await _buildSeries.beforeExit();
194194
await _buildOptions.logListener.cancel();
195195
}
196196

@@ -279,7 +279,7 @@ class BuildRunnerDaemonBuilder implements DaemonBuilder {
279279
logPerformanceDir: daemonOptions.logPerformanceDir,
280280
);
281281

282-
var builder = await BuildImpl.create(
282+
var buildSeries = await BuildSeries.create(
283283
buildOptions,
284284
daemonEnvironment,
285285
builders,
@@ -300,7 +300,7 @@ class BuildRunnerDaemonBuilder implements DaemonBuilder {
300300
.asyncWhere(
301301
(change) => shouldProcess(
302302
change,
303-
builder.assetGraph,
303+
buildSeries.assetGraph,
304304
buildOptions,
305305
// Assume we will create an outputDir.
306306
true,
@@ -316,11 +316,11 @@ class BuildRunnerDaemonBuilder implements DaemonBuilder {
316316
? AutoChangeProviderImpl(graphEvents())
317317
: ManualChangeProviderImpl(
318318
AssetTracker(daemonEnvironment.reader, buildOptions.targetGraph),
319-
builder.assetGraph,
319+
buildSeries.assetGraph,
320320
);
321321

322322
return BuildRunnerDaemonBuilder._(
323-
builder,
323+
buildSeries,
324324
buildOptions,
325325
outputStreamController,
326326
changeProvider,

build_runner/lib/src/generate/watch_impl.dart

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'package:build_runner_core/build_runner_core.dart';
1111
// ignore: implementation_imports
1212
import 'package:build_runner_core/src/asset_graph/graph.dart';
1313
// ignore: implementation_imports
14-
import 'package:build_runner_core/src/generate/build_impl.dart';
14+
import 'package:build_runner_core/src/generate/build_series.dart';
1515
import 'package:crypto/crypto.dart';
1616
import 'package:logging/logging.dart';
1717
import 'package:stream_transform/stream_transform.dart';
@@ -159,9 +159,9 @@ WatchImpl _runWatch(
159159
);
160160

161161
class WatchImpl implements BuildState {
162-
BuildImpl? _build;
162+
BuildSeries? _buildSeries;
163163

164-
AssetGraph? get assetGraph => _build?.assetGraph;
164+
AssetGraph? get assetGraph => _buildSeries?.assetGraph;
165165

166166
final String? _configKey;
167167

@@ -250,7 +250,7 @@ class WatchImpl implements BuildState {
250250
var controller = StreamController<BuildResult>();
251251

252252
Future<BuildResult> doBuild(List<List<AssetChange>> changes) async {
253-
var build = _build!;
253+
var build = _buildSeries!;
254254
_logger
255255
..info('${'-' * 72}\n')
256256
..info('Starting Build\n');
@@ -362,7 +362,7 @@ class WatchImpl implements BuildState {
362362
})
363363
.onDone(() async {
364364
await currentBuild;
365-
await _build?.beforeExit();
365+
await _buildSeries?.beforeExit();
366366
if (!controller.isClosed) await controller.close();
367367
_logger.info('Builds finished. Safe to exit\n');
368368
});
@@ -387,10 +387,10 @@ class WatchImpl implements BuildState {
387387
}
388388

389389
BuildResult firstBuild;
390-
BuildImpl? build;
390+
BuildSeries? build;
391391
try {
392392
build =
393-
_build = await BuildImpl.create(
393+
_buildSeries = await BuildSeries.create(
394394
options,
395395
watcherEnvironment,
396396
builders,

build_runner/test/generate/watch_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import 'package:build_runner/src/generate/watch_impl.dart' as watch_impl;
1414
import 'package:build_runner_core/build_runner_core.dart';
1515
import 'package:build_runner_core/src/asset_graph/graph.dart';
1616
import 'package:build_runner_core/src/asset_graph/node.dart';
17+
import 'package:build_runner_core/src/generate/build_phases.dart';
1718
import 'package:build_test/src/in_memory_reader_writer.dart';
1819
import 'package:logging/logging.dart';
1920
import 'package:path/path.dart' as path;
@@ -354,7 +355,7 @@ void main() {
354355
);
355356

356357
var expectedGraph = await AssetGraph.build(
357-
[],
358+
BuildPhases([]),
358359
<AssetId>{},
359360
{packageConfigId},
360361
buildPackageGraph({rootPackage('a'): []}),

build_runner/test/server/asset_handler_test.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:build_runner/src/server/server.dart';
1010
import 'package:build_runner_core/build_runner_core.dart';
1111
import 'package:build_runner_core/src/asset_graph/graph.dart';
1212
import 'package:build_runner_core/src/asset_graph/node.dart';
13+
import 'package:build_runner_core/src/generate/build_phases.dart';
1314
import 'package:build_runner_core/src/generate/options.dart';
1415
import 'package:build_runner_core/src/package_graph/target_graph.dart';
1516
import 'package:shelf/shelf.dart';
@@ -23,7 +24,7 @@ void main() {
2324

2425
setUp(() async {
2526
graph = await AssetGraph.build(
26-
[],
27+
BuildPhases([]),
2728
<AssetId>{},
2829
<AssetId>{},
2930
buildPackageGraph({rootPackage('a'): []}),
@@ -38,7 +39,7 @@ void main() {
3839
packageGraph,
3940
defaultRootPackageSources: defaultRootPackageSources,
4041
),
41-
[],
42+
BuildPhases([]),
4243
'a',
4344
);
4445
handler = AssetHandler(reader, 'a');

build_runner/test/server/serve_handler_test.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import 'package:build_runner/src/server/server.dart';
1515
import 'package:build_runner_core/build_runner_core.dart';
1616
import 'package:build_runner_core/src/asset_graph/graph.dart';
1717
import 'package:build_runner_core/src/asset_graph/node.dart';
18+
import 'package:build_runner_core/src/generate/build_phases.dart';
1819
import 'package:build_runner_core/src/generate/options.dart';
1920
import 'package:build_runner_core/src/generate/performance_tracker.dart';
2021
import 'package:build_runner_core/src/package_graph/target_graph.dart';
@@ -107,7 +108,7 @@ void main() {
107108
final packageGraph = buildPackageGraph({rootPackage('a'): []});
108109
readerWriter = TestReaderWriter(rootPackage: packageGraph.root.name);
109110
assetGraph = await AssetGraph.build(
110-
[],
111+
BuildPhases([]),
111112
<AssetId>{},
112113
<AssetId>{},
113114
packageGraph,
@@ -122,7 +123,7 @@ void main() {
122123
packageGraph,
123124
defaultRootPackageSources: defaultRootPackageSources,
124125
),
125-
[],
126+
BuildPhases([]),
126127
'a',
127128
),
128129
),

build_runner_core/lib/src/asset/finalized_reader.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import '../../build_runner_core.dart';
1515
import '../asset_graph/graph.dart';
1616
import '../asset_graph/node.dart';
1717
import '../asset_graph/optional_output_tracker.dart';
18-
import '../generate/phase.dart';
18+
import '../generate/build_phases.dart';
1919
import '../package_graph/target_graph.dart';
2020

2121
/// A view of the build output.
@@ -30,7 +30,7 @@ class FinalizedReader {
3030
final TargetGraph _targetGraph;
3131
OptionalOutputTracker? _optionalOutputTracker;
3232
final String _rootPackage;
33-
final List<BuildPhase> _buildPhases;
33+
final BuildPhases _buildPhases;
3434

3535
void reset(Set<String> buildDirs, Set<BuildFilter> buildFilters) {
3636
_optionalOutputTracker = OptionalOutputTracker(

0 commit comments

Comments
 (0)