@@ -31,6 +31,8 @@ class _Builder extends Builder {
3131
3232 final bool _requireLibraryDirective;
3333
34+ final String _header;
35+
3436 @override
3537 final Map <String , List <String >> buildExtensions;
3638
@@ -40,14 +42,16 @@ class _Builder extends Builder {
4042 String generatedExtension: '.g.dart' ,
4143 List <String > additionalOutputExtensions: const [],
4244 bool isStandalone: false ,
43- bool requireLibraryDirective: true })
45+ bool requireLibraryDirective: true ,
46+ String header})
4447 : _generatedExtension = generatedExtension,
4548 buildExtensions = {
4649 '.dart' : [generatedExtension]..addAll (additionalOutputExtensions)
4750 },
4851 _isStandalone = isStandalone,
4952 formatOutput = formatOutput ?? _formatter.format,
50- _requireLibraryDirective = requireLibraryDirective {
53+ _requireLibraryDirective = requireLibraryDirective,
54+ _header = header ?? defaultFileHeader {
5155 if (_generatedExtension == null ) {
5256 throw new ArgumentError .notNull ('generatedExtension' );
5357 }
@@ -87,6 +91,11 @@ class _Builder extends Builder {
8791 final outputId = _generatedFile (buildStep.inputId);
8892
8993 var contentBuffer = new StringBuffer ();
94+
95+ if (_header.isNotEmpty) {
96+ contentBuffer.writeln (_header);
97+ }
98+
9099 if (! _isStandalone) {
91100 var asset = buildStep.inputId;
92101 var name = nameOfPartial (
@@ -137,7 +146,7 @@ class _Builder extends Builder {
137146 stack);
138147 }
139148
140- buildStep.writeAsString (outputId, '$ _topHeader $ genPartContent ' );
149+ buildStep.writeAsString (outputId, genPartContent);
141150 }
142151}
143152
@@ -153,6 +162,10 @@ class PartBuilder extends _Builder {
153162 /// [formatOutput] is called to format the generated code. Defaults to
154163 /// [DartFormatter.format] .
155164 ///
165+ /// [header] is used to specify the content at the top of each generated file.
166+ /// If `null` , the content of [defaultFileHeader] is used.
167+ /// If [header] is an empty `String` no header is added.
168+ ///
156169 /// May set [requireLibraryDirective] to `false` in order to opt-in to
157170 /// supporting a `1.25.0` feature of `part of` being usable without an
158171 /// explicit `library` directive. Developers should restrict their `pubspec`
@@ -164,12 +177,14 @@ class PartBuilder extends _Builder {
164177 {String formatOutput (String code),
165178 String generatedExtension: '.g.dart' ,
166179 List <String > additionalOutputExtensions: const [],
167- bool requireLibraryDirective: true })
180+ bool requireLibraryDirective: true ,
181+ String header})
168182 : super (generators,
169183 formatOutput: formatOutput,
170184 generatedExtension: generatedExtension,
171185 additionalOutputExtensions: additionalOutputExtensions,
172- requireLibraryDirective: requireLibraryDirective);
186+ requireLibraryDirective: requireLibraryDirective,
187+ header: header);
173188}
174189
175190/// A [Builder] which generates Dart library files.
@@ -181,17 +196,22 @@ class LibraryBuilder extends _Builder {
181196 /// outputs through the [BuildStep] they should be indicated in
182197 /// [additionalOutputExtensions] .
183198 ///
199+ /// If `null` , the content of [defaultFileHeader] is used.
200+ /// If [header] is an empty `String` no header is added.
201+ ///
184202 /// [formatOutput] is called to format the generated code. Defaults to
185203 /// [DartFormatter.format] .
186204 LibraryBuilder (Generator generator,
187205 {String formatOutput (String code),
188206 String generatedExtension: '.g.dart' ,
189- List <String > additionalOutputExtensions: const []})
207+ List <String > additionalOutputExtensions: const [],
208+ String header})
190209 : super ([generator],
191210 formatOutput: formatOutput,
192211 generatedExtension: generatedExtension,
193212 additionalOutputExtensions: additionalOutputExtensions,
194- isStandalone: true );
213+ isStandalone: true ,
214+ header: header);
195215}
196216
197217Stream <GeneratedOutput > _generate (LibraryElement library,
@@ -215,7 +235,7 @@ Stream<GeneratedOutput> _generate(LibraryElement library,
215235
216236final _formatter = new DartFormatter ();
217237
218- const _topHeader = '''// GENERATED CODE - DO NOT MODIFY BY HAND
238+ const defaultFileHeader = '''// GENERATED CODE - DO NOT MODIFY BY HAND
219239
220240''' ;
221241
0 commit comments