diff --git a/_test/build.yaml b/_test/build.yaml index ce556f218..de4aeff3f 100644 --- a/_test/build.yaml +++ b/_test/build.yaml @@ -11,3 +11,9 @@ targets: - test/hello_world_custom_html_test.dart.browser_test.dart - test/other_test.dart.browser_test.dart - test/sub-dir/subdir_test.dart.browser_test.dart + # HELP: the settings below won't have any effect on the builders applied in `build.dart` + provides_builder|not_enabled_builder: + enabled: false + # HELP: Only when adding (even an empty) `other_builder.build.yaml` file, the builder won't show up in `build.dart` + other_builder|other_builder: + enabled: false \ No newline at end of file diff --git a/_test/other_builder.build.yaml b/_test/other_builder.build.yaml new file mode 100644 index 000000000..053f1cd8b --- /dev/null +++ b/_test/other_builder.build.yaml @@ -0,0 +1,5 @@ +#--- +## disable all inherited "provides_builder" builders... +#targets: +# $default: +# auto_apply_builders: false diff --git a/_test/pkgs/other_builder/build.yaml b/_test/pkgs/other_builder/build.yaml new file mode 100644 index 000000000..aaa175aa2 --- /dev/null +++ b/_test/pkgs/other_builder/build.yaml @@ -0,0 +1,5 @@ +builders: + other_builder: + import: "package:provides_builder/builders.dart" + builder_factories: ["someBuilder"] + build_extensions: {".dart": [".something.dart"]} diff --git a/_test/pkgs/other_builder/lib/builders.dart b/_test/pkgs/other_builder/lib/builders.dart new file mode 100644 index 000000000..66053aefb --- /dev/null +++ b/_test/pkgs/other_builder/lib/builders.dart @@ -0,0 +1,36 @@ +// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:async'; + +import 'package:build/build.dart'; + +class _SomeBuilder implements Builder { + const _SomeBuilder(); + + factory _SomeBuilder.fromOptions(BuilderOptions options) { + if (options.config['throw_in_constructor'] == true) { + throw StateError('Throwing on purpose cause you asked for it!'); + } + return const _SomeBuilder(); + } + + @override + final buildExtensions = const { + '.dart': ['.something.dart'] + }; + + @override + Future build(BuildStep buildStep) async { + if (!await buildStep.canRead(buildStep.inputId)) return; + + await buildStep.writeAsBytes( + buildStep.inputId.changeExtension('.something.dart'), + buildStep.readAsBytes(buildStep.inputId)); + } +} + + +Builder otherBuilder(BuilderOptions options) => + _SomeBuilder.fromOptions(options); diff --git a/_test/pkgs/other_builder/pubspec.yaml b/_test/pkgs/other_builder/pubspec.yaml new file mode 100644 index 000000000..47ff18706 --- /dev/null +++ b/_test/pkgs/other_builder/pubspec.yaml @@ -0,0 +1,10 @@ +name: other_builder + +environment: + sdk: ^3.0.0 + +dependencies: + build: + path: ../../../build + provides_builder: + path: ../provides_builder diff --git a/_test/pkgs/provides_builder/build.yaml b/_test/pkgs/provides_builder/build.yaml index 21b8d8bf6..98868f733 100644 --- a/_test/pkgs/provides_builder/build.yaml +++ b/_test/pkgs/provides_builder/build.yaml @@ -15,6 +15,10 @@ builders: builder_factories: ["throwingBuilder"] build_extensions: {".fail": [".fail.message"]} auto_apply: dependents + not_enabled_builder: + import: "package:provides_builder/builders.dart" + builder_factories: [ "notEnabledBuilder" ] + build_extensions: { ".not.enabled": [ ".not.enabled.message" ] } post_process_builders: some_post_process_builder: target: "provides_builder" diff --git a/_test/pkgs/provides_builder/lib/builders.dart b/_test/pkgs/provides_builder/lib/builders.dart index ab5782da6..17dd5cbf2 100644 --- a/_test/pkgs/provides_builder/lib/builders.dart +++ b/_test/pkgs/provides_builder/lib/builders.dart @@ -66,3 +66,5 @@ Builder notApplied(BuilderOptions options) => _SomeBuilder.fromOptions(options); PostProcessBuilder somePostProcessBuilder(BuilderOptions options) => _SomePostProcessBuilder.fromOptions(options); Builder throwingBuilder(_) => _ThrowingBuilder(); +Builder notEnabledBuilder(BuilderOptions options) => + _SomeBuilder.fromOptions(options); diff --git a/_test/pubspec.yaml b/_test/pubspec.yaml index 7ba70c14a..ab624d573 100644 --- a/_test/pubspec.yaml +++ b/_test/pubspec.yaml @@ -16,6 +16,8 @@ dev_dependencies: build_web_compilers: any dart_flutter_team_lints: ^2.0.0 io: ^1.0.0 + other_builder: + path: pkgs/other_builder/ path: ^1.8.0 provides_builder: path: pkgs/provides_builder/ diff --git a/_test/test/generated_script_integration_test.dart b/_test/test/generated_script_integration_test.dart index 96faa00a9..edf53cb49 100644 --- a/_test/test/generated_script_integration_test.dart +++ b/_test/test/generated_script_integration_test.dart @@ -14,6 +14,7 @@ void main() { await runCommand(['generate-build-script']); }); + // TODO: this test fails, because the "not_enabled_builder" still shows up... test('Generates a build script matching the golden', () { var generatedScript = File('.dart_tool/build/entrypoint/build.dart').readAsStringSync(); @@ -22,4 +23,17 @@ void main() { .replaceAll('\r', ''); expect(generatedScript, expected); }); + + + /// Nog een ander probleem: + /// of zo lijkt toch: + /// - er worden té veel builders binnengepakt obv dependencies... + /// - maar nu: both scorekeeper_codege:serializer_generator and scorekeeper_codege:serializer_generator may output lib/proto.config.json + /// + /// ik DENK dat het probleem als volgt is: + /// - scorekeeper_example_domain wordt in tests / dev_dependencies van scorekeeper_codegen binnengetrokken + /// - scorekeeper_example_domain is ook een dependency van ???? + /// -> kan ik dependency tree opzoeken van een dart project? + + }