Skip to content

Commit 56248e0

Browse files
authored
Deprecations before build major version release. (#4175)
1 parent e5af363 commit 56248e0

File tree

14 files changed

+205
-99
lines changed

14 files changed

+205
-99
lines changed

_test_common/lib/runner_asset_writer_spy.dart

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,35 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'dart:async';
6+
import 'dart:convert';
67

78
import 'package:build/build.dart';
89
import 'package:build_runner_core/build_runner_core.dart';
910

10-
class RunnerAssetWriterSpy extends AssetWriterSpy implements RunnerAssetWriter {
11+
class RunnerAssetWriterSpy implements RunnerAssetWriter {
1112
final RunnerAssetWriter _delegate;
13+
final _assetsWritten = <AssetId>{};
1214

1315
final _assetsDeleted = <AssetId>{};
1416
Iterable<AssetId> get assetsDeleted => _assetsDeleted;
1517

16-
RunnerAssetWriterSpy(this._delegate) : super(_delegate);
18+
RunnerAssetWriterSpy(this._delegate);
19+
20+
@override
21+
Future<void> writeAsBytes(AssetId id, List<int> bytes) {
22+
_assetsWritten.add(id);
23+
return _delegate.writeAsBytes(id, bytes);
24+
}
25+
26+
@override
27+
Future<void> writeAsString(
28+
AssetId id,
29+
String contents, {
30+
Encoding encoding = utf8,
31+
}) {
32+
_assetsWritten.add(id);
33+
return _delegate.writeAsString(id, contents, encoding: encoding);
34+
}
1735

1836
@override
1937
Future<void> delete(AssetId id) {

build/CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
## 3.0.3-wip
22

33
- Deprecate `runBuilder`. It has been moved to `package:build_runner_core` and
4-
will be deleted from `package:build`. Please note: the currently supported
4+
will be removed from `package:build`. Please note: the currently supported
55
ways to run builders are using `build_runner` on the command line or
66
`build_test` in tests. If you need ongoing support for a different way to run
77
builders please get in touch at
88
https://github.com/dart-lang/build/discussions.
9+
- Deprecate `runPostProcessBuilder`. Like `runBuilder`, it has been moved to
10+
`package:build_runner_core` and will be removed from `package:build`.
11+
- Deprecate `AssetWriterSpy`. It will be removed.
12+
- Deprecate `MultiplexingBuilder`. It will be removed.
913
- Use `build_runner_core` 9.3.1.
1014

1115
## 3.0.2

build/lib/build.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ export 'src/builder/exceptions.dart';
1313
export 'src/builder/file_deleting_builder.dart' show FileDeletingBuilder;
1414
export 'src/builder/logging.dart' show log;
1515
export 'src/builder/multiplexing_builder.dart';
16-
export 'src/builder/post_process_build_step.dart' show PostProcessBuildStep;
17-
export 'src/builder/post_process_builder.dart'
18-
show PostProcessBuilder, PostProcessBuilderFactory;
16+
export 'src/builder/post_process_build_step.dart';
17+
export 'src/builder/post_process_builder.dart';
1918
export 'src/generate/expected_outputs.dart';
2019
export 'src/generate/run_builder.dart';
21-
export 'src/generate/run_post_process_builder.dart' show runPostProcessBuilder;
20+
export 'src/generate/run_post_process_builder.dart';
2221
export 'src/resource/resource.dart';

build/lib/src/asset/writer.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ abstract class AssetWriter {
2929
}
3030

3131
/// An [AssetWriter] which tracks all [assetsWritten] during its lifetime.
32+
@Deprecated('This class will be deleted without replacement in 4.0.0.')
3233
class AssetWriterSpy implements AssetWriter {
3334
final AssetWriter _delegate;
3435
final _assetsWritten = <AssetId>{};

build/lib/src/builder/build_step.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,3 @@ abstract class BuildStep implements AssetReader, AssetWriter {
135135
/// [readAsBytes] or [readAsString].
136136
Future<PackageConfig> get packageConfig;
137137
}
138-
139-
abstract class StageTracker {
140-
T trackStage<T>(String label, T Function() action, {bool isExternal = false});
141-
}

build/lib/src/builder/multiplexing_builder.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'builder.dart';
1111
/// **Note**: All builders are ran without ordering guarantees. Thus, none of
1212
/// the builders can use the outputs of other builders in this group. All
1313
/// builders must also have distinct outputs.
14+
@Deprecated('This class will be deleted without replacement in 4.0.0.')
1415
class MultiplexingBuilder implements Builder {
1516
final Iterable<Builder> _builders;
1617

build/lib/src/builder/post_process_build_step.dart

Lines changed: 11 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -5,90 +5,35 @@
55
import 'dart:async';
66
import 'dart:convert';
77

8-
import 'package:async/async.dart';
9-
import 'package:crypto/crypto.dart' show Digest;
8+
import 'package:crypto/crypto.dart';
109

1110
import '../../build.dart';
1211

13-
// This is not exported to hack around a package-private constructor.
14-
PostProcessBuildStep postProcessBuildStep(
15-
AssetId inputId,
16-
AssetReader reader,
17-
AssetWriter writer,
18-
void Function(AssetId) addAsset,
19-
void Function(AssetId) deleteAsset,
20-
) => PostProcessBuildStep._(inputId, reader, writer, addAsset, deleteAsset);
21-
2212
/// A simplified [BuildStep] which can only read its primary input, and can't
23-
/// get a [Resolver] or any [Resource]s, at least for now.
24-
class PostProcessBuildStep {
25-
final AssetId inputId;
26-
27-
final AssetReader _reader;
28-
final AssetWriter _writer;
29-
final void Function(AssetId) _addAsset;
30-
final void Function(AssetId) _deleteAsset;
31-
32-
/// The result of any writes which are starting during this step.
33-
final _writeResults = <Future<Result<void>>>[];
13+
/// get a [Resolver] or any [Resource]s.
14+
abstract class PostProcessBuildStep {
15+
AssetId get inputId;
3416

35-
PostProcessBuildStep._(
36-
this.inputId,
37-
this._reader,
38-
this._writer,
39-
this._addAsset,
40-
this._deleteAsset,
41-
);
17+
Future<Digest> digest(AssetId id);
4218

43-
Future<Digest> digest(AssetId id) =>
44-
inputId == id
45-
? _reader.digest(id)
46-
: Future.error(InvalidInputException(id));
19+
Future<List<int>> readInputAsBytes();
4720

48-
Future<List<int>> readInputAsBytes() => _reader.readAsBytes(inputId);
21+
Future<String> readInputAsString({Encoding encoding = utf8});
4922

50-
Future<String> readInputAsString({Encoding encoding = utf8}) =>
51-
_reader.readAsString(inputId, encoding: encoding);
52-
53-
Future<void> writeAsBytes(AssetId id, FutureOr<List<int>> bytes) {
54-
_addAsset(id);
55-
var done = _futureOrWrite(
56-
bytes,
57-
(List<int> b) => _writer.writeAsBytes(id, b),
58-
);
59-
_writeResults.add(Result.capture(done));
60-
return done;
61-
}
23+
Future<void> writeAsBytes(AssetId id, FutureOr<List<int>> bytes);
6224

6325
Future<void> writeAsString(
6426
AssetId id,
6527
FutureOr<String> content, {
6628
Encoding encoding = utf8,
67-
}) {
68-
_addAsset(id);
69-
var done = _futureOrWrite(
70-
content,
71-
(String c) => _writer.writeAsString(id, c, encoding: encoding),
72-
);
73-
_writeResults.add(Result.capture(done));
74-
return done;
75-
}
29+
});
7630

7731
/// Marks an asset for deletion in the post process step.
78-
void deletePrimaryInput() {
79-
_deleteAsset(inputId);
80-
}
32+
void deletePrimaryInput();
8133

8234
/// Waits for work to finish and cleans up resources.
8335
///
8436
/// This method should be called after a build has completed. After the
8537
/// returned [Future] completes then all outputs have been written.
86-
Future<void> complete() async {
87-
await Future.wait(_writeResults.map(Result.release));
88-
}
38+
Future<void> complete();
8939
}
90-
91-
Future<void> _futureOrWrite<T>(
92-
FutureOr<T> content,
93-
Future<void> Function(T content) write,
94-
) => (content is Future<T>) ? content.then(write) : write(content);

build/lib/src/generate/run_builder.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ import '../analyzer/resolver.dart';
1212
import '../asset/id.dart';
1313
import '../asset/reader.dart';
1414
import '../asset/writer.dart';
15-
import '../builder/build_step.dart';
1615
import '../builder/builder.dart';
1716
import '../resource/resource.dart';
1817

18+
export 'package:build_runner_core/src/generate/run_builder.dart'
19+
show StageTracker;
20+
1921
@Deprecated('''
2022
This method has moved to `package:build_runner_core` and will be
21-
deleted from `package:build`.
23+
removed from `package:build` in 4.0.0.
2224
2325
The currently supported ways to run builders are using `build_runner`
2426
on the command line or `build_test` in tests. If you need ongoing
@@ -33,7 +35,7 @@ Future<void> runBuilder(
3335
Resolvers? resolvers, {
3436
Logger? logger,
3537
ResourceManager? resourceManager,
36-
StageTracker? stageTracker,
38+
build_runner_core.StageTracker? stageTracker,
3739
void Function(AssetId input, Iterable<AssetId> assets)?
3840
reportUnusedAssetsForInput,
3941
PackageConfig? packageConfig,

build/lib/src/generate/run_post_process_builder.dart

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,31 @@
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.
44

5-
import 'package:build_runner_core/build_runner_core.dart';
5+
// ignore: implementation_imports
6+
import 'package:build_runner_core/src/generate/run_post_process_builder.dart'
7+
as build_runner_core;
68
import 'package:logging/logging.dart';
79

810
import '../asset/id.dart';
911
import '../asset/reader.dart';
1012
import '../asset/writer.dart';
11-
import '../builder/post_process_build_step.dart';
13+
import '../builder/post_process_builder.dart';
1214

1315
/// Run [builder] with [inputId] as the primary input.
1416
///
1517
/// [addAsset] should update the build systems knowledge of what assets exist.
1618
/// If an asset should not be written this function should throw.
1719
/// [deleteAsset] should remove the asset from the build system, it will not be
1820
/// deleted on disk since the `writer` has no mechanism for delete.
21+
@Deprecated('''
22+
This method has moved to `package:build_runner_core` and will be
23+
deleted from `package:build` in 4.0.0.
24+
25+
The currently supported ways to run builders are using `build_runner`
26+
on the command line or `build_test` in tests. If you need ongoing
27+
support for a different way to run builders please get in touch at
28+
https://github.com/dart-lang/build/discussions.
29+
''')
1930
Future<void> runPostProcessBuilder(
2031
PostProcessBuilder builder,
2132
AssetId inputId,
@@ -24,19 +35,12 @@ Future<void> runPostProcessBuilder(
2435
Logger logger, {
2536
required void Function(AssetId) addAsset,
2637
required void Function(AssetId) deleteAsset,
27-
}) async {
28-
await BuildLogLogger.scopeLogAsync(() async {
29-
var buildStep = postProcessBuildStep(
30-
inputId,
31-
reader,
32-
writer,
33-
addAsset,
34-
deleteAsset,
35-
);
36-
try {
37-
await builder.build(buildStep);
38-
} finally {
39-
await buildStep.complete();
40-
}
41-
}, logger);
42-
}
38+
}) => build_runner_core.runPostProcessBuilder(
39+
builder,
40+
inputId,
41+
reader,
42+
writer,
43+
logger,
44+
addAsset: addAsset,
45+
deleteAsset: deleteAsset,
46+
);

build_runner_core/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
`build_test` in tests. If you need ongoing support for a different way to run
77
builders please get in touch at
88
https://github.com/dart-lang/build/discussions.
9+
- Similarly, move `runPostProcessBuilder` to here from `package:build`.
910
- Use `build_runner` 2.7.1.
1011
- Remove `overrideGeneratedOutputDirectory`, `pubBinary`.
1112

0 commit comments

Comments
 (0)