@@ -21,7 +21,13 @@ import 'since.dart';
21
21
void main (List <String > args) async {
22
22
var parser = ArgParser ()
23
23
..addOption ('out' , abbr: 'o' , help: 'Specifies output directory.' )
24
- ..addOption ('token' , abbr: 't' , help: 'Specifies a github auth token.' );
24
+ ..addOption ('token' , abbr: 't' , help: 'Specifies a github auth token.' )
25
+ ..addFlag ('create-dirs' ,
26
+ abbr: 'd' , help: 'Enables creation of necessary directories.' )
27
+ ..addFlag ('markdown' ,
28
+ abbr: 'm' ,
29
+ help: 'Enables generation of the markdown docs.' ,
30
+ defaultsTo: true );
25
31
26
32
ArgResults options;
27
33
try {
@@ -36,7 +42,14 @@ void main(List<String> args) async {
36
42
var token = options['token' ];
37
43
var auth = token is String ? Authentication .withToken (token) : null ;
38
44
39
- await generateDocs (outDir, auth: auth);
45
+ var createDirectories = options['create-dirs' ] == true ;
46
+
47
+ var enableMarkdown = options['markdown' ] == true ;
48
+
49
+ await generateDocs (outDir,
50
+ auth: auth,
51
+ createDirectories: createDirectories,
52
+ enableMarkdown: enableMarkdown);
40
53
}
41
54
42
55
const ruleFootMatter = '''
@@ -155,20 +168,33 @@ Future<void> fetchSinceInfo(Authentication? auth) async {
155
168
sinceInfo = await getSinceMap (auth);
156
169
}
157
170
158
- Future <void > generateDocs (String ? dir, {Authentication ? auth}) async {
171
+ Future <void > generateDocs (String ? dir,
172
+ {Authentication ? auth,
173
+ bool createDirectories = false ,
174
+ bool enableMarkdown = true }) async {
159
175
var outDir = dir;
160
176
if (outDir != null ) {
161
177
var d = Directory (outDir);
178
+ if (createDirectories) {
179
+ d.createSync ();
180
+ }
181
+
162
182
if (! d.existsSync ()) {
163
183
print ("Directory '${d .path }' does not exist" );
164
184
return ;
165
185
}
186
+
166
187
if (! File ('$outDir /options' ).existsSync ()) {
167
188
var lintsChildDir = Directory ('$outDir /lints' );
168
189
if (lintsChildDir.existsSync ()) {
169
190
outDir = lintsChildDir.path;
170
191
}
171
192
}
193
+
194
+ if (createDirectories) {
195
+ Directory ('$outDir /options' ).createSync ();
196
+ Directory ('$outDir /machine' ).createSync ();
197
+ }
172
198
}
173
199
174
200
registerLintRules ();
@@ -185,12 +211,17 @@ Future<void> generateDocs(String? dir, {Authentication? auth}) async {
185
211
// Generate rule files.
186
212
for (var l in rules) {
187
213
RuleHtmlGenerator (l).generate (outDir);
188
- RuleMarkdownGenerator (l).generate (filePath: outDir);
214
+ if (enableMarkdown) {
215
+ RuleMarkdownGenerator (l).generate (filePath: outDir);
216
+ }
189
217
}
190
218
191
219
// Generate index.
192
220
HtmlIndexer (Registry .ruleRegistry).generate (outDir);
193
- MarkdownIndexer (Registry .ruleRegistry).generate (filePath: outDir);
221
+
222
+ if (enableMarkdown) {
223
+ MarkdownIndexer (Registry .ruleRegistry).generate (filePath: outDir);
224
+ }
194
225
195
226
// Generate options samples.
196
227
OptionsSample (rules).generate (outDir);
@@ -562,13 +593,14 @@ class RuleHtmlGenerator {
562
593
String get name => rule.name;
563
594
564
595
String get since {
565
- var info = sinceInfo[name]! ;
566
596
// See: https://github.com/dart-lang/linter/issues/2824
597
+ // var info = sinceInfo[name]!;
567
598
// var version = info.sinceDartSdk != null
568
599
// ? '>= ${info.sinceDartSdk}'
569
600
// : '<strong>unreleased</strong>';
570
601
//return 'Dart SDK: $version • <small>(Linter v${info.sinceLinter})</small>';
571
- return 'Linter v${info .sinceLinter }' ;
602
+ var sinceLinter = sinceInfo[name]! .sinceLinter;
603
+ return sinceLinter != null ? 'Linter v$sinceLinter ' : 'Unreleased' ;
572
604
}
573
605
574
606
void generate ([String ? filePath]) {
@@ -641,13 +673,14 @@ class RuleMarkdownGenerator {
641
673
String get name => rule.name;
642
674
643
675
String get since {
644
- var info = sinceInfo[name]! ;
645
676
// See: https://github.com/dart-lang/linter/issues/2824
677
+ // var info = sinceInfo[name]!;
646
678
// var version = info.sinceDartSdk != null
647
679
// ? '>= ${info.sinceDartSdk}'
648
- // : '**unreleased**';
649
- // return 'Dart SDK: $version • (Linter v${info.sinceLinter})';
650
- return 'Linter v${info .sinceLinter }' ;
680
+ // : '<strong>unreleased</strong>';
681
+ //return 'Dart SDK: $version • <small>(Linter v${info.sinceLinter})</small>';
682
+ var sinceLinter = sinceInfo[name]! .sinceLinter;
683
+ return sinceLinter != null ? 'Linter v$sinceLinter ' : 'Unreleased' ;
651
684
}
652
685
653
686
void generate ({String ? filePath}) {
0 commit comments