| 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 0616f0add4a1c1a31fbffb21be7c7e452d046283..ec63c06ccb4a1df099eec7d87041f68e9f5807e3 100644
|
| --- a/sdk/lib/_internal/dartdoc/bin/dartdoc.dart
|
| +++ b/sdk/lib/_internal/dartdoc/bin/dartdoc.dart
|
| @@ -18,11 +18,9 @@ library dartdoc;
|
|
|
| import 'dart:async';
|
| import 'dart:io';
|
| -import 'dart:uri';
|
|
|
| // 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;
|
|
|
| @@ -41,7 +39,7 @@ main() {
|
|
|
| final Path libPath = scriptDir.append('../../../../');
|
|
|
| - String packageRoot;
|
| + Path packageRoot;
|
|
|
| argParser.addFlag('no-code',
|
| help: 'Do not include source code in the documentation.',
|
| @@ -168,7 +166,7 @@ main() {
|
| ' the entrypoint.',
|
| callback: (packageDir) {
|
| if(packageDir != null) {
|
| - packageRoot = packageDir;
|
| + packageRoot = new Path(packageDir);
|
| }
|
| });
|
|
|
| @@ -177,7 +175,7 @@ main() {
|
| help: 'Deprecated: same as --package-root.',
|
| callback: (packageDir) {
|
| if(packageDir != null) {
|
| - packageRoot = packageDir;
|
| + packageRoot = new Path(packageDir);
|
| }
|
| });
|
|
|
| @@ -190,22 +188,21 @@ main() {
|
| exit(1);
|
| }
|
|
|
| - final entrypoints = <Uri>[];
|
| + final entrypoints = <Path>[];
|
| try {
|
| final option = argParser.parse(args);
|
|
|
| // This checks to see if the root of all entrypoints is the same.
|
| // If it is not, then we display a warning, as package imports might fail.
|
| var entrypointRoot;
|
| - for (final entrypoint in option.rest) {
|
| - var uri = Uri.parse(entrypoint);
|
| - if (uri.scheme == '') uri = pathToFileUri(entrypoint);
|
| - entrypoints.add(uri);
|
| + for(final arg in option.rest) {
|
| + var entrypoint = new Path(arg);
|
| + entrypoints.add(entrypoint);
|
|
|
| - if (uri.scheme != 'file') continue;
|
| if (entrypointRoot == null) {
|
| - entrypointRoot = path.dirname(entrypoint);
|
| - } else if (entrypointRoot != path.dirname(entrypoint)) {
|
| + entrypointRoot = entrypoint.directoryPath;
|
| + } else if (entrypointRoot.toNativePath() !=
|
| + entrypoint.directoryPath.toNativePath()) {
|
| print('Warning: entrypoints are at different directories. "package:"'
|
| ' imports may fail.');
|
| }
|
| @@ -223,7 +220,25 @@ main() {
|
| exit(1);
|
| }
|
|
|
| - if (packageRoot == null) packageRoot = _getPackageRoot(entrypoints);
|
| + if (packageRoot == null) {
|
| + // Check if there's a `packages` directory in the entry point directory.
|
| + var script = path.normalize(path.absolute(entrypoints[0].toNativePath()));
|
| + var dir = path.join(path.dirname(script), 'packages/');
|
| + if (new Directory(dir).existsSync()) {
|
| + // TODO(amouravski): convert all of dartdoc to use pathos.
|
| + packageRoot = new Path(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 = new Path(path.join(path.joinAll(parts.take(libDir)),
|
| + 'packages'));
|
| + }
|
| + }
|
| + }
|
|
|
| cleanOutputDirectory(dartdoc.outputDir);
|
|
|
| @@ -252,25 +267,3 @@ 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) return;
|
| -
|
| - 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.
|
| - var parts = path.split(path.dirname(script));
|
| - var libDir = parts.lastIndexOf('lib');
|
| - if (libDir > 0) {
|
| - return path.join(path.joinAll(parts.take(libDir)), 'packages');
|
| - } else {
|
| - return null;
|
| - }
|
| -}
|
|
|