Add flutter pub package support and --link-to-remote to grinder (#2130)
* Add flutter support and --link-to-remote to grinder
* Add dependency check for requires-flutter
diff --git a/lib/src/package_meta.dart b/lib/src/package_meta.dart
index c6ba1bb..19d922d 100644
--- a/lib/src/package_meta.dart
+++ b/lib/src/package_meta.dart
@@ -317,7 +317,8 @@
@override
bool get requiresFlutter =>
- _pubspec['environment']?.containsKey('flutter') == true;
+ _pubspec['environment']?.containsKey('flutter') == true ||
+ _pubspec['dependencies']?.containsKey('flutter') == true;
@override
FileContents getReadmeContents() {
diff --git a/tool/grind.dart b/tool/grind.dart
index 62d9c7e..c60df36 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -6,6 +6,7 @@
import 'dart:io' hide ProcessException;
import 'package:dartdoc/src/io_utils.dart';
+import 'package:dartdoc/src/package_meta.dart';
import 'package:grinder/grinder.dart';
import 'package:io/io.dart';
import 'package:path/path.dart' as path;
@@ -759,17 +760,37 @@
Directory(path.join(env['PUB_CACHE'], 'hosted', 'pub.dartlang.org'));
Directory pubPackageDir =
cache.listSync().firstWhere((e) => e.path.contains(pubPackageName));
- await launcher.runStreamed('pub', ['get'],
- workingDirectory: pubPackageDir.absolute.path);
- await launcher.runStreamed(
- Platform.resolvedExecutable,
- [
- '--enable-asserts',
- path.join(Directory.current.absolute.path, 'bin', 'dartdoc.dart'),
- '--json',
- '--show-progress',
- ]..addAll(dartdocParameters),
- workingDirectory: pubPackageDir.absolute.path);
+ if (PackageMeta.fromDir(pubPackageDir).requiresFlutter) {
+ FlutterRepo flutterRepo =
+ await FlutterRepo.fromExistingFlutterRepo(await cleanFlutterRepo);
+ await launcher.runStreamed(flutterRepo.cachePub, ['get'],
+ environment: flutterRepo.env,
+ workingDirectory: pubPackageDir.absolute.path);
+ await launcher.runStreamed(
+ flutterRepo.cacheDart,
+ [
+ '--enable-asserts',
+ path.join(Directory.current.absolute.path, 'bin', 'dartdoc.dart'),
+ '--json',
+ '--link-to-remote',
+ '--show-progress',
+ ]..addAll(dartdocParameters),
+ environment: flutterRepo.env,
+ workingDirectory: pubPackageDir.absolute.path);
+ } else {
+ await launcher.runStreamed('pub', ['get'],
+ workingDirectory: pubPackageDir.absolute.path);
+ await launcher.runStreamed(
+ Platform.resolvedExecutable,
+ [
+ '--enable-asserts',
+ path.join(Directory.current.absolute.path, 'bin', 'dartdoc.dart'),
+ '--json',
+ '--link-to-remote',
+ '--show-progress',
+ ]..addAll(dartdocParameters),
+ workingDirectory: pubPackageDir.absolute.path);
+ }
return path.join(pubPackageDir.absolute.path, 'doc', 'api');
}