Skip to content

Commit d44c805

Browse files
authored
Move a few more grinder tasks to package:args commands (dart-lang#3468)
1 parent f66eb72 commit d44c805

File tree

4 files changed

+76
-171
lines changed

4 files changed

+76
-171
lines changed

.github/workflows/test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,6 @@ jobs:
7979
DARTDOC_BOT: ${{ matrix.job }}
8080
- name: ${{ matrix.job }}
8181
if: runner.os == 'Windows' && matrix.job == 'main'
82-
run: dart run grinder buildbot
82+
run: dart run tool\task.dart buildbot
8383
env:
8484
DARTDOC_BOT: ${{ matrix.job }}

tool/ci.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ if [ "$DARTDOC_BOT" = "sdk-docs" ]; then
1414
# silence stdout but echo stderr
1515
echo ""
1616
echo "Building and validating SDK docs..."
17-
dart run grinder validate-sdk-docs
17+
dart run tool/task.dart validate sdk-docs
1818
echo "SDK docs process finished"
1919
elif [ "$DARTDOC_BOT" = "flutter" ]; then
2020
echo "Running flutter dartdoc bot"
21-
dart run grinder build-flutter-docs
21+
dart run tool/task.dart doc flutter
2222
elif [ "$DARTDOC_BOT" = "packages" ]; then
2323
echo "Running packages dartdoc bot"
2424
PACKAGE_NAME=angular PACKAGE_VERSION=">=7.0.0" DARTDOC_PARAMS="--include=angular" dart run grinder build-pub-package
@@ -30,5 +30,5 @@ elif [ "$DARTDOC_BOT" = "sdk-analyzer" ]; then
3030
dart run grinder test-with-analyzer-sdk
3131
else
3232
echo "Running main dartdoc bot"
33-
dart run grinder buildbot
33+
dart run tool/task.dart buildbot
3434
fi

tool/grind.dart

Lines changed: 0 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -13,51 +13,6 @@ import 'task.dart' as task;
1313

1414
void main(List<String> args) => grind(args);
1515

16-
/// Enable the following experiments for language tests.
17-
final List<String> languageExperiments =
18-
(Platform.environment['LANGUAGE_EXPERIMENTS'] ?? '').split(RegExp(r'\s+'));
19-
20-
// Directory.systemTemp is not a constant. So wrap it.
21-
Directory createTempSync(String prefix) =>
22-
Directory.systemTemp.createTempSync(prefix);
23-
24-
Directory get testPackageFlutterPlugin => Directory(
25-
p.joinAll(['testing', 'flutter_packages', 'test_package_flutter_plugin']));
26-
27-
final Directory _testPackageDocsDir = createTempSync('test_package');
28-
29-
final Directory _testPackageExperimentsDocsDir =
30-
createTempSync('test_package_experiments');
31-
32-
final _whitespacePattern = RegExp(r'\s+');
33-
34-
final List<String> _extraDartdocParameters = [
35-
...?Platform.environment['DARTDOC_PARAMS']?.split(_whitespacePattern),
36-
];
37-
38-
final Directory flutterDirDevTools =
39-
Directory(p.join(task.flutterDir.path, 'dev', 'tools'));
40-
41-
@Task('Run quick presubmit checks.')
42-
void presubmit() async {
43-
await task.analyzeTestPackages();
44-
await task.analyzePackage();
45-
await task.validateFormat();
46-
await task.validateBuild();
47-
await task.runTryPublish();
48-
await task.runTest();
49-
}
50-
51-
@Task('Run tests, self-test dartdoc, and run the publish test')
52-
@Depends(presubmit)
53-
Future<void> buildbot() async {
54-
await task.runTest();
55-
await task.validateDartdocDocs();
56-
}
57-
58-
@Task('Generate docs for the Dart SDK')
59-
Future<void> buildSdkDocs() async => await task.docSdk();
60-
6116
/// Creates a clean version of dartdoc (based on the current directory, assumed
6217
/// to be a git repository), configured to use packages from the Dart SDK.
6318
///
@@ -127,129 +82,10 @@ Future<void> testWithAnalyzerSdk() async {
12782
}
12883
}
12984

130-
Future<Iterable<Map<String, Object?>>> _buildTestPackageDocs(
131-
String outputDir, String cwd,
132-
{List<String> params = const [],
133-
String label = '',
134-
String? testPackagePath}) async {
135-
if (label != '') label = '-$label';
136-
testPackagePath ??= task.testPackage.absolute.path;
137-
var launcher = SubprocessLauncher('build-test-package-docs$label');
138-
var testPackagePubGet = launcher.runStreamed(
139-
Platform.resolvedExecutable, ['pub', 'get'],
140-
workingDirectory: testPackagePath);
141-
var dartdocPubGet = launcher.runStreamed(
142-
Platform.resolvedExecutable, ['pub', 'get'],
143-
workingDirectory: cwd);
144-
await Future.wait([testPackagePubGet, dartdocPubGet]);
145-
return await launcher.runStreamed(
146-
Platform.resolvedExecutable,
147-
[
148-
'--enable-asserts',
149-
p.join(cwd, 'bin', 'dartdoc.dart'),
150-
'--output',
151-
outputDir,
152-
'--example-path-prefix',
153-
'examples',
154-
'--include-source',
155-
'--json',
156-
'--link-to-remote',
157-
'--pretty-index-json',
158-
...params,
159-
..._extraDartdocParameters,
160-
],
161-
workingDirectory: testPackagePath);
162-
}
163-
164-
@Task('Build generated test package docs from the experiment test package')
165-
@Depends(clean)
166-
Future<void> buildTestExperimentsPackageDocs() async {
167-
await _buildTestPackageDocs(
168-
_testPackageExperimentsDocsDir.absolute.path, Directory.current.path,
169-
testPackagePath: task.testPackageExperiments.absolute.path,
170-
params: [
171-
'--enable-experiment',
172-
'non-nullable,generic-metadata',
173-
'--no-link-to-remote'
174-
]);
175-
}
176-
177-
@Task('Serve experimental test package on port 8003.')
178-
@Depends(buildTestExperimentsPackageDocs)
179-
Future<void> serveTestExperimentsPackageDocs() async =>
180-
await task.servePackageDocs(
181-
name: Platform.environment['PACKAGE_NAME']!,
182-
version: Platform.environment['PACKAGE_VERSION'],
183-
);
184-
185-
@Task('Build test package docs (HTML) with inherited docs and source code')
186-
@Depends(clean)
187-
Future<void> buildTestPackageDocs() async {
188-
await _buildTestPackageDocs(
189-
_testPackageDocsDir.absolute.path, Directory.current.path);
190-
}
191-
192-
@Task('Serve test package docs locally with dhttpd on port 8002')
193-
@Depends(buildTestPackageDocs)
194-
Future<void> serveTestPackageDocs() async {
195-
await startTestPackageDocsServer();
196-
}
197-
198-
Future<void> startTestPackageDocsServer() async {
199-
log('launching dhttpd on port 8002 for SDK');
200-
var launcher = SubprocessLauncher('serve-test-package-docs');
201-
await launcher.runStreamed(Platform.resolvedExecutable, [
202-
'pub',
203-
'global',
204-
'run',
205-
'dhttpd',
206-
'--port',
207-
'8002',
208-
'--path',
209-
_testPackageDocsDir.absolute.path,
210-
]);
211-
}
212-
213-
@Task('Compare warnings in Dartdoc for Flutter')
214-
Future<void> compareFlutterWarnings() async =>
215-
await task.compareFlutterWarnings();
216-
217-
@Task('Build flutter docs')
218-
Future<void> buildFlutterDocs() async => await task.docFlutter();
219-
22085
@Task(
22186
'Build an arbitrary pub package based on PACKAGE_NAME and PACKAGE_VERSION '
22287
'environment variables')
22388
Future<String> buildPubPackage() async => await task.docPackage(
22489
name: Platform.environment['PACKAGE_NAME']!,
22590
version: Platform.environment['PACKAGE_VERSION'],
22691
);
227-
228-
@Task('Rebuild generated files')
229-
@Depends(clean)
230-
Future<void> build() async => task.buildAll();
231-
232-
@Task('Clean up test directories and delete build cache')
233-
Future<void> clean() async {
234-
for (var e in _nonRootPubData) {
235-
e.deleteSync(recursive: true);
236-
}
237-
}
238-
239-
Iterable<FileSystemEntity> get _nonRootPubData {
240-
// This involves deleting things, so be careful.
241-
if (!File(p.join('tool', 'grind.dart')).existsSync()) {
242-
throw FileSystemException('wrong CWD, run from root of dartdoc package');
243-
}
244-
return Directory('.')
245-
.listSync(recursive: true)
246-
.where((e) => p.dirname(e.path) != '.')
247-
.where((e) => <String>['.dart_tool', '.packages', 'pubspec.lock']
248-
.contains(p.basename(e.path)));
249-
}
250-
251-
@Task('Generate docs for dartdoc without link-to-remote')
252-
Future<void> testDartdoc() async => await task.validateDartdocDocs();
253-
254-
@Task('Validate the SDK doc build.')
255-
Future<void> validateSdkDocs() async => await task.validateSdkDocs();

tool/task.dart

Lines changed: 72 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ void main(List<String> args) async {
2323
var parser = ArgParser()
2424
..addCommand('analyze')
2525
..addCommand('build')
26+
..addCommand('buildbot')
27+
..addCommand('clean')
2628
..addCommand('compare')
2729
..addCommand('doc')
2830
..addCommand('serve')
@@ -38,10 +40,10 @@ void main(List<String> args) async {
3840
return switch (commandResults.name) {
3941
'analyze' => await runAnalyze(commandResults),
4042
'build' => await runBuild(commandResults),
43+
'buildbot' => await runBuildbot(),
44+
'clean' => await runClean(),
4145
'compare' => await runCompare(commandResults),
4246
'doc' => await runDoc(commandResults),
43-
// TODO(srawlins): Implement tasks that serve various docs, after generating
44-
// them.
4547
'serve' => await runServe(commandResults),
4648
'test' => await runTest(),
4749
'try-publish' => await runTryPublish(),
@@ -172,6 +174,31 @@ Stream<String> _dartFileLines(Directory dir) {
172174
]);
173175
}
174176

177+
Future<void> runBuildbot() async {
178+
await analyzeTestPackages();
179+
await analyzePackage();
180+
await validateFormat();
181+
await validateBuild();
182+
await runTryPublish();
183+
await runTest();
184+
await validateDartdocDocs();
185+
}
186+
187+
Future<void> runClean() async {
188+
// This involves deleting things, so be careful.
189+
if (!File(p.join('tool', 'grind.dart')).existsSync()) {
190+
throw FileSystemException('Wrong CWD, run from root of dartdoc package');
191+
}
192+
const pubDataFileNames = {'.dart_tool', '.packages', 'pubspec.lock'};
193+
var nonRootPubData = Directory('.')
194+
.listSync(recursive: true)
195+
.where((e) => p.dirname(e.path) != '.')
196+
.where((e) => pubDataFileNames.contains(p.basename(e.path)));
197+
for (var e in nonRootPubData) {
198+
e.deleteSync(recursive: true);
199+
}
200+
}
201+
175202
Future<void> runCompare(ArgResults commandResults) async {
176203
if (commandResults.rest.length != 1) {
177204
throw ArgumentError('"compare" command requires a single target.');
@@ -256,6 +283,7 @@ Future<void> runDoc(ArgResults commandResults) async {
256283
'flutter' => await docFlutter(),
257284
'package' => await _docPackage(commandResults),
258285
'sdk' => await docSdk(),
286+
'testing-package' => await docTestingPackage(),
259287
_ => throw UnimplementedError('Unknown doc target: "$target"'),
260288
});
261289
}
@@ -405,6 +433,31 @@ Map<String, String> createThrowawayPubCache() {
405433
final String _defaultPubCache = Platform.environment['PUB_CACHE'] ??
406434
p.context.resolveTildePath('~/.pub-cache');
407435

436+
Future<void> docTestingPackage() async {
437+
var testPackagePath = testPackage.absolute.path;
438+
var launcher = SubprocessLauncher('doc-test-package');
439+
await launcher.runStreamedDartCommand(['pub', 'get'],
440+
workingDirectory: testPackagePath);
441+
await launcher.runStreamedDartCommand(
442+
[
443+
'--enable-asserts',
444+
p.join(Directory.current.absolute.path, 'bin', 'dartdoc.dart'),
445+
'--output',
446+
_testingPackageDocsDir.absolute.path,
447+
'--example-path-prefix',
448+
'examples',
449+
'--include-source',
450+
'--json',
451+
'--link-to-remote',
452+
'--pretty-index-json',
453+
],
454+
workingDirectory: testPackagePath,
455+
);
456+
}
457+
458+
final Directory _testingPackageDocsDir =
459+
Directory.systemTemp.createTempSync('testing_package');
460+
408461
Future<void> compareSdkWarnings() async {
409462
var originalDartdocSdkDocs =
410463
Directory.systemTemp.createTempSync('dartdoc-comparison-sdkdocs');
@@ -507,6 +560,7 @@ Future<void> runServe(ArgResults commandResults) async {
507560
'flutter' => await serveFlutterDocs(),
508561
'package' => await _servePackageDocs(commandResults),
509562
'sdk' => await serveSdkDocs(),
563+
'testing-package' => await serveTestingPackageDocs(),
510564
_ => throw UnimplementedError('Unknown serve target: "$target"'),
511565
});
512566
}
@@ -578,6 +632,21 @@ Future<void> _serveDocsFrom(String servePath, int port, String context) async {
578632
]);
579633
}
580634

635+
Future<void> serveTestingPackageDocs() async {
636+
print('launching dhttpd on port 8002 for SDK');
637+
var launcher = SubprocessLauncher('serve-test-package-docs');
638+
await launcher.runStreamed(Platform.resolvedExecutable, [
639+
'pub',
640+
'global',
641+
'run',
642+
'dhttpd',
643+
'--port',
644+
'8002',
645+
'--path',
646+
_testingPackageDocsDir.absolute.path,
647+
]);
648+
}
649+
581650
Future<void> runTest() async {
582651
await analyzeTestPackages();
583652
await SubprocessLauncher('dart run test')
@@ -665,7 +734,7 @@ Future<void> validateDartdocDocs() async {
665734
var launcher = SubprocessLauncher('test-dartdoc');
666735
await launcher.runStreamedDartCommand([
667736
'--enable-asserts',
668-
'bin/dartdoc.dart',
737+
p.join('bin', 'dartdoc.dart'),
669738
'--output',
670739
_dartdocDocsPath,
671740
'--no-link-to-remote',

0 commit comments

Comments
 (0)