Allow user to not set a path – if using the SDK
diff --git a/tool/dartdoc-compare.dart b/tool/dartdoc-compare.dart
index 553589e..b6b0a94 100644
--- a/tool/dartdoc-compare.dart
+++ b/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;
+ }
}