Index: sdk/lib/_internal/dartdoc/bin/dartdoc.dart |
diff --git a/sdk/lib/_internal/dartdoc/bin/dartdoc.dart b/sdk/lib/_internal/dartdoc/bin/dartdoc.dart |
index 74970fcc99949968c7524be42e4a90b40072a15b..bc210abcfee2823d66f34f0fcf4f75252a04b126 100644 |
--- a/sdk/lib/_internal/dartdoc/bin/dartdoc.dart |
+++ b/sdk/lib/_internal/dartdoc/bin/dartdoc.dart |
@@ -21,6 +21,7 @@ import 'dart:io'; |
// TODO(rnystrom): Use "package:" URL (#4968). |
import '../lib/dartdoc.dart'; |
+import '../lib/src/dartdoc/utils.dart'; |
import 'package:args/args.dart'; |
import 'package:pathos/path.dart' as path; |
@@ -188,7 +189,7 @@ main() { |
exit(1); |
} |
- final entrypoints = <String>[]; |
+ final entrypoints = <Uri>[]; |
try { |
final option = argParser.parse(args); |
@@ -196,8 +197,11 @@ main() { |
// If it is not, then we display a warning, as package imports might fail. |
var entrypointRoot; |
for (final entrypoint in option.rest) { |
- entrypoints.add(entrypoint); |
+ var uri = Uri.parse(entrypoint); |
+ if (uri.scheme == '') uri = pathToFileUri(entrypoint); |
+ entrypoints.add(uri); |
+ if (uri.scheme != 'file') continue; |
if (entrypointRoot == null) { |
entrypointRoot = path.dirname(entrypoint); |
} else if (entrypointRoot != path.dirname(entrypoint)) { |
@@ -218,23 +222,7 @@ main() { |
exit(1); |
} |
- if (packageRoot == null) { |
- // Check if there's a `packages` directory in the entry point directory. |
- var script = path.normalize(path.absolute(entrypoints[0])); |
- var dir = path.join(path.dirname(script), 'packages/'); |
- if (new Directory(dir).existsSync()) { |
- packageRoot = dir; |
- } else { |
- // If there is not, then check if the entrypoint is somewhere in a `lib` |
- // directory. |
- dir = path.dirname(script); |
- var parts = path.split(dir); |
- var libDir = parts.lastIndexOf('lib'); |
- if (libDir > 0) { |
- packageRoot = path.join(path.joinAll(parts.take(libDir)), 'packages'); |
- } |
- } |
- } |
+ if (packageRoot == null) packageRoot = _getPackageRoot(entrypoints); |
cleanOutputDirectory(dartdoc.outputDir); |
@@ -263,3 +251,26 @@ main() { |
}) |
.whenComplete(() => dartdoc.cleanup()); |
} |
+ |
+String _getPackageRoot(List<Uri> entrypoints) { |
+ // Check if there's a `packages` directory in the entry point directory. |
+ var fileEntrypoint = entrypoints.firstWhere( |
+ (entrypoint) => entrypoint.scheme == 'file', |
+ orElse: () => null); |
+ if (fileEntrypoint != null) { |
+ var script = path.normalize(path.absolute(fileUriToPath(fileEntrypoint))); |
+ var dir = path.join(path.dirname(script), 'packages/'); |
+ if (new Directory(dir).existsSync()) return dir; |
+ } |
+ |
+ // If there is not, then check if the entrypoint is somewhere in a `lib` |
+ // directory. |
+ dir = path.dirname(script); |
+ var parts = path.split(dir); |
+ var libDir = parts.lastIndexOf('lib'); |
+ if (libDir > 0) { |
+ return path.join(path.joinAll(parts.take(libDir)), 'packages'); |
+ } else { |
+ return null; |
+ } |
+} |