Skip to content

Commit 30ec961

Browse files
committed
Refactor handling of generateDocs:false
1 parent 8b4d03e commit 30ec961

File tree

5 files changed

+35
-75
lines changed

5 files changed

+35
-75
lines changed

bin/dartdoc.dart

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,5 @@ void main(List<String> arguments) {
2020
final packageConfigProvider = PhysicalPackageConfigProvider();
2121
final packageBuilder =
2222
PubPackageBuilder(config, pubPackageMetaProvider, packageConfigProvider);
23-
final dartdoc = config.generateDocs
24-
? Dartdoc.fromContext(config, packageBuilder)
25-
: Dartdoc.withEmptyGenerator(config, packageBuilder);
26-
dartdoc.executeGuarded();
23+
Dartdoc.fromContext(config, packageBuilder).executeGuarded();
2724
}

lib/src/dartdoc.dart

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import 'dart:io' show Platform, exitCode, stderr;
99
import 'package:analyzer/file_system/file_system.dart';
1010
import 'package:dartdoc/src/dartdoc_options.dart';
1111
import 'package:dartdoc/src/failure.dart';
12-
import 'package:dartdoc/src/generator/empty_generator.dart';
1312
import 'package:dartdoc/src/generator/generator.dart';
1413
import 'package:dartdoc/src/generator/html_generator.dart';
1514
import 'package:dartdoc/src/logging.dart';
@@ -27,10 +26,28 @@ const String programName = 'dartdoc';
2726
// Update when pubspec version changes by running `pub run build_runner build`
2827
const String dartdocVersion = packageVersion;
2928

29+
/// Used for the generateDocs:false option.
30+
///
31+
/// Writes nothing.
32+
class NoFileWriter implements FileWriter {
33+
@override
34+
void write(String filePath, String content, {Warnable? element}) {
35+
// Do nothing
36+
}
37+
38+
@override
39+
void writeBytes(String filePath, List<int> content,
40+
{bool allowOverwrite = false}) {
41+
// Do nothing
42+
}
43+
44+
@override
45+
Set<String> get writtenFiles => {};
46+
}
47+
3048
class DartdocFileWriter implements FileWriter {
3149
final String _outputDir;
32-
@override
33-
final ResourceProvider resourceProvider;
50+
final ResourceProvider _resourceProvider;
3451
final Map<String, Warnable?> _fileElementMap = {};
3552
@override
3653
final Set<String> writtenFiles = {};
@@ -43,7 +60,7 @@ class DartdocFileWriter implements FileWriter {
4360

4461
DartdocFileWriter(
4562
this._outputDir,
46-
this.resourceProvider, {
63+
this._resourceProvider, {
4764
int maxFileCount = 0,
4865
int maxTotalSize = 0,
4966
}) : _maxFileCount = maxFileCount,
@@ -115,8 +132,8 @@ class DartdocFileWriter implements FileWriter {
115132
/// Returns the file at [outFile] relative to [_outputDir], creating the
116133
/// parent directory if necessary.
117134
File _getFile(String outFile) {
118-
var file = resourceProvider
119-
.getFile(resourceProvider.pathContext.join(_outputDir, outFile));
135+
var file = _resourceProvider
136+
.getFile(_resourceProvider.pathContext.join(_outputDir, outFile));
120137
var parent = file.parent;
121138
if (!parent.exists) {
122139
parent.create();
@@ -144,19 +161,6 @@ class Dartdoc {
144161
@visibleForTesting
145162
set generator(Generator newGenerator) => _generator = newGenerator;
146163

147-
/// Factory method that builds Dartdoc with an empty generator.
148-
factory Dartdoc.withEmptyGenerator(
149-
DartdocOptionContext config,
150-
PackageBuilder packageBuilder,
151-
) {
152-
return Dartdoc._(
153-
config,
154-
config.resourceProvider.getFolder('UNUSED'),
155-
initEmptyGenerator(),
156-
packageBuilder,
157-
);
158-
}
159-
160164
/// Builds Dartdoc with a generator determined by [context].
161165
factory Dartdoc.fromContext(
162166
DartdocGeneratorOptionContext context,
@@ -165,12 +169,14 @@ class Dartdoc {
165169
var resourceProvider = context.resourceProvider;
166170
var outputPath = resourceProvider.pathContext.absolute(context.output);
167171
var outputDir = resourceProvider.getFolder(outputPath)..create();
168-
var writer = DartdocFileWriter(
169-
outputPath,
170-
resourceProvider,
171-
maxFileCount: context.maxFileCount,
172-
maxTotalSize: context.maxTotalSize,
173-
);
172+
var writer = context.generateDocs
173+
? DartdocFileWriter(
174+
outputPath,
175+
resourceProvider,
176+
maxFileCount: context.maxFileCount,
177+
maxTotalSize: context.maxTotalSize,
178+
)
179+
: NoFileWriter();
174180
return Dartdoc._(
175181
context,
176182
outputDir,

lib/src/dartdoc_options.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1278,6 +1278,9 @@ class DartdocGeneratorOptionContext extends DartdocOptionContext {
12781278
bool get useBaseHref => optionSet['useBaseHref'].valueAt(context);
12791279

12801280
String? get resourcesDir => optionSet['resourcesDir'].valueAt(context);
1281+
1282+
/// Whether to generate docs or perform a dry run.
1283+
bool get generateDocs => optionSet['generateDocs'].valueAt(context);
12811284
}
12821285

12831286
class DartdocProgramOptionContext extends DartdocGeneratorOptionContext
@@ -1288,9 +1291,6 @@ class DartdocProgramOptionContext extends DartdocGeneratorOptionContext
12881291
DartdocProgramOptionContext.fromDefaultContextLocation(
12891292
super.optionSet, super.resourceProvider)
12901293
: super.fromDefaultContextLocation();
1291-
1292-
/// Whether to generate docs or perform a dry run.
1293-
bool get generateDocs => optionSet['generateDocs'].valueAt(context);
12941294
}
12951295

12961296
List<DartdocOption<bool>> createDartdocProgramOptions(

lib/src/generator/empty_generator.dart

Lines changed: 0 additions & 40 deletions
This file was deleted.

lib/src/generator/generator.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,12 @@
55
/// A library containing an abstract documentation generator.
66
library;
77

8-
import 'package:analyzer/file_system/file_system.dart';
98
import 'package:dartdoc/src/dartdoc_options.dart';
109
import 'package:dartdoc/src/model/package_graph.dart';
1110
import 'package:dartdoc/src/package_meta.dart';
1211
import 'package:dartdoc/src/warnings.dart';
1312

1413
abstract class FileWriter {
15-
ResourceProvider get resourceProvider;
16-
1714
/// All filenames written by this generator.
1815
Set<String> get writtenFiles;
1916

0 commit comments

Comments
 (0)