Skip to content

Commit ff22321

Browse files
nateboschmatanlurey
authored andcommitted
Add option to specify additional output extensions (#237)
Fixes #232
1 parent 65d186c commit ff22321

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

lib/src/builder.dart

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,20 @@ class _Builder extends Builder {
3030

3131
final bool _requireLibraryDirective;
3232

33+
@override
34+
final Map<String, List<String>> buildExtensions;
35+
3336
/// Wrap [_generators] to form a [Builder]-compatible API.
3437
_Builder(this._generators,
3538
{String formatOutput(String code),
3639
String generatedExtension: '.g.dart',
40+
List<String> additionalOutputExtensions: const [],
3741
bool isStandalone: false,
3842
bool requireLibraryDirective: true})
3943
: _generatedExtension = generatedExtension,
44+
buildExtensions = {
45+
'.dart': [generatedExtension]..addAll(additionalOutputExtensions)
46+
},
4047
_isStandalone = isStandalone,
4148
formatOutput = formatOutput ?? _formatter.format,
4249
_requireLibraryDirective = requireLibraryDirective {
@@ -61,11 +68,6 @@ class _Builder extends Builder {
6168
await _generateForLibrary(lib, buildStep);
6269
}
6370

64-
@override
65-
Map<String, List<String>> get buildExtensions => {
66-
'.dart': [_generatedExtension]
67-
};
68-
6971
AssetId _generatedFile(AssetId input) =>
7072
input.changeExtension(_generatedExtension);
7173

@@ -143,7 +145,9 @@ class PartBuilder extends _Builder {
143145
/// Wrap [generators] as a [Builder] that generates `part of` files.
144146
///
145147
/// [generatedExtension] indicates what files will be created for each `.dart`
146-
/// input. Defaults to `.g.dart`.
148+
/// input. Defaults to `.g.dart`. If any generator in [generators] will create
149+
/// additional outputs through the [BuildStep] they should be indicated in
150+
/// [additionalOutputExtensions].
147151
///
148152
/// [formatOutput] is called to format the generated code. Defaults to
149153
/// [DartFormatter.format].
@@ -158,10 +162,12 @@ class PartBuilder extends _Builder {
158162
PartBuilder(List<Generator> generators,
159163
{String formatOutput(String code),
160164
String generatedExtension: '.g.dart',
165+
List<String> additionalOutputExtensions: const [],
161166
bool requireLibraryDirective: true})
162167
: super(generators,
163168
formatOutput: formatOutput,
164169
generatedExtension: generatedExtension,
170+
additionalOutputExtensions: additionalOutputExtensions,
165171
requireLibraryDirective: requireLibraryDirective);
166172
}
167173

@@ -170,15 +176,20 @@ class LibraryBuilder extends _Builder {
170176
/// Wrap [generator] as a [Builder] that generates Dart library files.
171177
///
172178
/// [generatedExtension] indicates what files will be created for each `.dart`
173-
/// input. Defaults to `.g.dart`.
179+
/// input. Defaults to `.g.dart`. If [generator] will create additional
180+
/// outputs through the [BuildStep] they should be indicated in
181+
/// [additionalOutputExtensions].
174182
///
175183
/// [formatOutput] is called to format the generated code. Defaults to
176184
/// [DartFormatter.format].
177185
LibraryBuilder(Generator generator,
178-
{String formatOutput(String code), String generatedExtension: '.g.dart'})
186+
{String formatOutput(String code),
187+
String generatedExtension: '.g.dart',
188+
List<String> additionalOutputExtensions: const []})
179189
: super([generator],
180190
formatOutput: formatOutput,
181191
generatedExtension: generatedExtension,
192+
additionalOutputExtensions: additionalOutputExtensions,
182193
isStandalone: true);
183194
}
184195

0 commit comments

Comments
 (0)