Updates and fixes to the dartdoc-compare tool (dart-lang/markdown#207)
diff --git a/pkgs/markdown/tool/dartdoc-compare.dart b/pkgs/markdown/tool/dartdoc-compare.dart index f98fec2..63ed868 100644 --- a/pkgs/markdown/tool/dartdoc-compare.dart +++ b/pkgs/markdown/tool/dartdoc-compare.dart
@@ -1,5 +1,5 @@ import 'dart:convert' show JSON; -import 'dart:io' show Directory, File, Process, exitCode; +import 'dart:io' show Directory, File, Platform, Process, exitCode; import 'package:args/args.dart' show ArgParser; import 'package:path/path.dart' show absolute; @@ -17,7 +17,7 @@ ..addOption(_dartdocDir, help: "Directory of the dartdoc package") ..addOption(_markdownBefore, help: "Markdown package 'before' ref") ..addOption(_markdownAfter, - defaultsTo: "HEAD", help: "Markdown package 'after' ref") + defaultsTo: "HEAD", help: "Markdown package 'after' ref (or 'local')") ..addFlag(_sdk, defaultsTo: false, negatable: false, help: "Is the package the SDK?") ..addFlag(_help, abbr: "h", hide: true); @@ -66,15 +66,16 @@ final String dartdocBin; final String dartdocPubspecPath; final bool sdk; + final String markdownPath = new File(Platform.script.path).parent.parent.path; DartdocCompare(this.dartdocDir, this.markdownBefore, this.markdownAfter, this.dartdocBin, this.dartdocPubspecPath, this.sdk); bool compare(String package) { - // Generate docs with Markdown "A". + // Generate docs with Markdown "Before". var outBefore = _runDartdoc(markdownBefore, package); - // Generate docs with Markdown "B". + // Generate docs with Markdown "After". var outAfter = _runDartdoc(markdownAfter, package); // Compare outputs @@ -90,10 +91,15 @@ print("=========================================================="); print("Running dartdoc for $markdownRef..."); print("=========================================================="); - _doInPath(dartdocDir, () => _updateDartdocPubspec(markdownRef)); + _doInPath(dartdocDir, () { + var returnCode = _updateDartdocPubspec(markdownRef); + if (returnCode != 0) { + throw "Could not update dartdoc's pubspec!"; + } + }); return _doInPath(path, () { if (!sdk) { - _system('pub', ['get']); + _system('pub', ['upgrade']); } var out = Directory.systemTemp .createTempSync("dartdoc-compare-${markdownRef}__"); @@ -102,15 +108,15 @@ if (sdk) { args.add('--sdk-docs'); - - if (path != null) { - args.add("--dart-sdk=$path"); - } } - print("Command: $cmd ${args.join(" ")}"); + print('Command: $cmd ${args.join(' ')}'); + var startTime = new DateTime.now(); _system(cmd, args); - print(""); + var endTime = new DateTime.now(); + var duration = endTime.difference(startTime).inSeconds; + print('dartdoc generation for $markdownRef took $duration seconds.'); + print(''); return out.path; }); @@ -122,15 +128,21 @@ // make modifiable copy dartdocPubspec = JSON.decode(JSON.encode(dartdocPubspec)) as Map; - dartdocPubspec['dependencies']['markdown'] = { - 'git': { - 'url': 'git://github.com/dart-lang/markdown.git', - 'ref': markdownRef - } - }; + if (markdownRef == 'local') { + dartdocPubspec['dependencies']['markdown'] = { + 'path': markdownPath, + }; + } else { + dartdocPubspec['dependencies']['markdown'] = { + 'git': { + 'url': 'git://github.com/dart-lang/markdown.git', + 'ref': markdownRef + } + }; + } new File(dartdocPubspecPath).writeAsStringSync(JSON.encode(dartdocPubspec)); - return _system('pub', ['get']); + return _system('pub', ['upgrade']); } }