Allow user to not set a path – if using the SDK
diff --git a/pkgs/markdown/tool/dartdoc-compare.dart b/pkgs/markdown/tool/dartdoc-compare.dart index 553589e..b6b0a94 100644 --- a/pkgs/markdown/tool/dartdoc-compare.dart +++ b/pkgs/markdown/tool/dartdoc-compare.dart
@@ -21,6 +21,7 @@ ..addFlag(_sdk, defaultsTo: false, negatable: false, help: "Is the package the SDK?") ..addFlag(_help, abbr: "h", hide: true); + var options = parser.parse(arguments); if (options[_help]) { print(parser.usage); @@ -42,9 +43,16 @@ absolute(options[_dartdocDir], "pubspec.yaml"), options[_sdk]); - var package = options.rest.first; + String path; + if (comparer.sdk) { + if (options.rest.isNotEmpty) { + path = options.rest.single; + } + } else { + path = options.rest.single; + } - if (comparer.compare(package)) { + if (comparer.compare(path)) { exitCode = 0; } else { exitCode = 1; @@ -78,19 +86,28 @@ return result.exitCode == 0; } - String _runDartdoc(String markdownRef, String package) { + String _runDartdoc(String markdownRef, String path) { print("=========================================================="); print("Running dartdoc for $markdownRef..."); print("=========================================================="); _doInPath(dartdocDir, () => _updateDartdocPubspec(markdownRef)); - return _doInPath(package, () { - if (!sdk) _system('pub', ['get']); + return _doInPath(path, () { + if (!sdk) { + _system('pub', ['get']); + } var out = Directory.systemTemp .createTempSync("dartdoc-compare-${markdownRef}__"); - var sdk_options = - sdk ? ["--sdk-docs", "--dart-sdk=$package"] : <String>[]; var cmd = "dart"; - var args = ["$dartdocBin", "--output=${out.path}"]..addAll(sdk_options); + var args = ["$dartdocBin", "--output=${out.path}"]; + + if (sdk) { + args.add('--sdk-docs'); + + if (path != null) { + args.add("--dart-sdk=$path"); + } + } + print("Command: $cmd ${args.join(" ")}"); _system(cmd, args); print(""); @@ -125,9 +142,15 @@ } T _doInPath<T>(String path, T f()) { + if (path == null) { + return f(); + } + var former = Directory.current.path; Directory.current = path; - var result = f(); - Directory.current = former; - return result; + try { + return f(); + } finally { + Directory.current = former; + } }