Skip to content

Commit 8f5d855

Browse files
committed
Update crypto, add entryPoints option to buildStep#resolve, and enable custom resolvers
* Update crypto, add entryPoints option to buildStep#resolve, and enable custom resolvers
1 parent 15e41b5 commit 8f5d855

File tree

9 files changed

+39
-45
lines changed

9 files changed

+39
-45
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
## 0.3.0
44
- **BREAKING** Renamed values of three enums to be lower-case:
55
`BuildType`, `BuildStatus`, and `PackageDependencyType`.
6+
- Updated to crypto ^1.0.0.
7+
- Added option to resolve additional entry points in `buildStep.resolve`.
8+
- Added option to pass in a custom `Resolvers` instance.
69

710
## 0.2.1
811
- Added the `deleteFilesByDefault` option to all top level methods. This will

lib/src/builder/build_step.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,6 @@ abstract class BuildStep {
3636
/// will only be resolved in [id], and not any other libraries. This gives a
3737
/// significant speed boost, at the cost of not being able to assume all
3838
/// constants are already resolved.
39-
Future<Resolver> resolve(AssetId id, {bool resolveAllConstants});
39+
Future<Resolver> resolve(AssetId id,
40+
{bool resolveAllConstants, List<AssetId> entryPoints});
4041
}

lib/src/builder/build_step_impl.dart

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import 'exceptions.dart';
2121
/// A single step in the build processes. This represents a single input and
2222
/// its expected and real outputs. It also handles tracking of dependencies.
2323
class BuildStepImpl implements BuildStep {
24-
/// Single `_resolvers` instance for all [BuildStepImpl]s
25-
static code_transformers.Resolvers _resolvers =
24+
/// Single `resolvers` instance for all [BuildStepImpl]s
25+
static code_transformers.Resolvers resolvers =
2626
new code_transformers.Resolvers(code_transformers.dartSdkDirectory,
2727
useSharedSources: true);
2828

@@ -102,9 +102,13 @@ class BuildStepImpl implements BuildStep {
102102

103103
/// Resolves [id] and returns a [Future<Resolver>] once that is done.
104104
@override
105-
Future<Resolver> resolve(AssetId id, {bool resolveAllConstants}) async =>
106-
new Resolver(await _resolvers.get(toBarbackTransform(this),
107-
[toBarbackAssetId(id)], resolveAllConstants));
105+
Future<Resolver> resolve(AssetId id,
106+
{bool resolveAllConstants, List<AssetId> entryPoints}) async {
107+
entryPoints ??= [];
108+
if (!entryPoints.contains(id)) entryPoints.add(id);
109+
return new Resolver(await resolvers.get(toBarbackTransform(this),
110+
entryPoints.map(toBarbackAssetId).toList(), resolveAllConstants));
111+
}
108112

109113
/// Should be called after `build` has completed. This will wait until for
110114
/// [_outputsCompleted].

lib/src/generate/build.dart

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import 'dart:async';
55
import 'dart:io';
66

7+
import 'package:code_transformers/resolver.dart';
78
import 'package:logging/logging.dart';
89
import 'package:shelf/shelf.dart';
910

@@ -48,14 +49,16 @@ Future<BuildResult> build(PhaseGroup phaseGroup,
4849
AssetWriter writer,
4950
Level logLevel,
5051
onLog(LogRecord record),
52+
Resolvers resolvers,
5153
Stream terminateEventStream}) async {
5254
var options = new BuildOptions(
5355
deleteFilesByDefault: deleteFilesByDefault,
5456
packageGraph: packageGraph,
5557
reader: reader,
5658
writer: writer,
5759
logLevel: logLevel,
58-
onLog: onLog);
60+
onLog: onLog,
61+
resolvers: resolvers);
5962
var buildImpl = new BuildImpl(options, phaseGroup);
6063

6164
/// Run the build!
@@ -94,6 +97,7 @@ Stream<BuildResult> watch(PhaseGroup phaseGroup,
9497
AssetWriter writer,
9598
Level logLevel,
9699
onLog(LogRecord record),
100+
Resolvers resolvers,
97101
Duration debounceDelay,
98102
DirectoryWatcherFactory directoryWatcherFactory,
99103
Stream terminateEventStream}) {
@@ -104,6 +108,7 @@ Stream<BuildResult> watch(PhaseGroup phaseGroup,
104108
writer: writer,
105109
logLevel: logLevel,
106110
onLog: onLog,
111+
resolvers: resolvers,
107112
debounceDelay: debounceDelay,
108113
directoryWatcherFactory: directoryWatcherFactory);
109114
var watchImpl = new WatchImpl(options, phaseGroup);
@@ -136,6 +141,7 @@ Stream<BuildResult> serve(PhaseGroup phaseGroup,
136141
AssetWriter writer,
137142
Level logLevel,
138143
onLog(LogRecord record),
144+
Resolvers resolvers,
139145
Duration debounceDelay,
140146
DirectoryWatcherFactory directoryWatcherFactory,
141147
Stream terminateEventStream,
@@ -150,6 +156,7 @@ Stream<BuildResult> serve(PhaseGroup phaseGroup,
150156
writer: writer,
151157
logLevel: logLevel,
152158
onLog: onLog,
159+
resolvers: resolvers,
153160
debounceDelay: debounceDelay,
154161
directoryWatcherFactory: directoryWatcherFactory,
155162
directory: directory,

lib/src/generate/build_impl.dart

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ class BuildImpl {
5454
_deleteFilesByDefault = options.deleteFilesByDefault,
5555
_packageGraph = options.packageGraph,
5656
_reader = options.reader,
57-
_writer = options.writer;
57+
_writer = options.writer {
58+
if (options.resolvers != null) BuildStepImpl.resolvers = options.resolvers;
59+
}
5860

5961
/// Runs a build
6062
///
@@ -471,9 +473,14 @@ class BuildImpl {
471473
package, [package == _packageGraph.root.name ? '**/*' : 'lib/**']));
472474
var allInputs = await _reader.listAssetIds(inputSets).toList();
473475
_inputsByPackage.clear();
474-
for (var input in allInputs) {
475-
_inputsByPackage.putIfAbsent(input.package, () => new Set<AssetId>());
476476

477+
// Initialize the set of inputs for each package.
478+
for (var package in packages) {
479+
_inputsByPackage[package] = new Set<AssetId>();
480+
}
481+
482+
// Populate the inputs for each package.
483+
for (var input in allInputs) {
477484
if (_isValidInput(input)) {
478485
_inputsByPackage[input.package].add(input);
479486
}

lib/src/generate/options.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import 'dart:async';
55
import 'dart:io';
66

7+
import 'package:code_transformers/resolver.dart';
78
import 'package:logging/logging.dart';
89
import 'package:shelf/shelf.dart';
910
import 'package:shelf_static/shelf_static.dart';
@@ -23,6 +24,7 @@ class BuildOptions {
2324
AssetReader reader;
2425
AssetWriter writer;
2526
bool deleteFilesByDefault;
27+
Resolvers resolvers;
2628

2729
// Watch mode options.
2830
Duration debounceDelay;
@@ -46,6 +48,7 @@ class BuildOptions {
4648
this.port,
4749
this.reader,
4850
this.requestHandler,
51+
this.resolvers,
4952
this.writer}) {
5053
/// Set up logging
5154
logLevel ??= Level.INFO;

lib/src/util/constants.dart

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,5 @@ final String assetGraphPath = '$cacheDir/$scriptHash/asset_graph.json';
1111
/// Relative path to the cache directory from the root package dir.
1212
const String cacheDir = '.dart_tool/build';
1313

14-
final String scriptHash = () {
15-
var hasher = new MD5();
16-
hasher.add(Platform.script.path.codeUnits);
17-
return CryptoUtils.bytesToHex(hasher.close());
18-
}();
14+
final String scriptHash =
15+
md5.convert(Platform.script.path.codeUnits).toString();

pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: build
2-
version: 0.3.0-dev
2+
version: 0.3.0
33
description: A build system for Dart.
44
author: Dart Team <[email protected]>
55
homepage: https://github.com/dart-lang/build
@@ -11,7 +11,7 @@ dependencies:
1111
analyzer: ^0.27.1
1212
barback: ^0.15.0
1313
code_transformers: ^0.4.1
14-
crypto: ^0.9.1
14+
crypto: ^1.0.0
1515
logging: ^0.11.2
1616
glob: ^1.1.0
1717
path: ^1.1.0

test/analyzer/resolver_test.dart

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -279,34 +279,6 @@ void main() {
279279
});
280280
});
281281

282-
test('deleted files should be removed', () {
283-
return validateResolver(
284-
inputs: {
285-
'a|web/main.dart': '''import 'package:a/a.dart';''',
286-
'a|lib/a.dart': '''import 'package:a/b.dart';''',
287-
'a|lib/b.dart': '''class Engine{}''',
288-
},
289-
validator: (resolver) {
290-
var engine = resolver.getType('Engine');
291-
var uri = resolver.getImportUri(engine.library);
292-
expect(uri.toString(), 'package:a/b.dart');
293-
}).then((_) {
294-
return validateResolver(
295-
inputs: {
296-
'a|web/main.dart': '''import 'package:a/a.dart';''',
297-
'a|lib/a.dart': '''lib a;\n class Engine{}'''
298-
},
299-
validator: (resolver) {
300-
var engine = resolver.getType('Engine');
301-
var uri = resolver.getImportUri(engine.library);
302-
expect(uri.toString(), 'package:a/a.dart');
303-
304-
// Make sure that we haven't leaked any sources.
305-
expect((resolver.resolver as dynamic).sources.length, 2);
306-
});
307-
});
308-
});
309-
310282
test('handles circular imports', () {
311283
return validateResolver(
312284
inputs: {

0 commit comments

Comments
 (0)