Prepare for 0.20.0 (#1702)

* Test-pin to a bleeding edge SDK to verify fix for relative path resolution

* fix test to allow edge

* args version needs revision for dart 2

* dartfmt, fix bug with hide

* Require .59 for Dart 2.

* dartfmt

* pubspec fix

* Version number bump and regen docs
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 86ffc1b..41bf243 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 0.20.0
+* include and exclude are now available in dartdoc_options.yaml as supported options
+  (#1700, #1674)
+* Support a new `{@animation}` directive in documentation comments to display
+  videos in a simple player.
+* Fix Dart 2.0 support (#1668) and expand test coverage to include --help.
+
 ## 0.19.1
 * Update `package:markdown` to `2.0.0`, which includes many improvements –
   especially to the parsing of links.
diff --git a/README.md b/README.md
index a62be49..82e39b4 100644
--- a/README.md
+++ b/README.md
@@ -155,6 +155,18 @@
 library my_library;
 ```
 
+### Animations
+
+You can specify links to videos inline that will be handled with a simple HTML5 player:
+
+```dart
+/// This widget is a dancing Linux penguin.
+///
+/// {@animation name 100 200 http://host.com/path/to/video.mp4}
+```
+
+'name' is user defined, and the numbers are the width and height of the animation in pixels.
+
 ### Macros
 
 You can specify "macros", i.e. reusable pieces of documentation. For that, first specify a template
diff --git a/lib/dartdoc.dart b/lib/dartdoc.dart
index 1861e48..a337cb2 100644
--- a/lib/dartdoc.dart
+++ b/lib/dartdoc.dart
@@ -37,7 +37,7 @@
 
 const String name = 'dartdoc';
 // Update when pubspec version changes.
-const String dartdocVersion = '0.19.1';
+const String dartdocVersion = '0.20.0';
 
 /// Helper class to initialize the default generators since they require
 /// GeneratorContext.
diff --git a/lib/src/dartdoc_options.dart b/lib/src/dartdoc_options.dart
index b4caa0f..4edc9eb 100644
--- a/lib/src/dartdoc_options.dart
+++ b/lib/src/dartdoc_options.dart
@@ -357,6 +357,7 @@
       {String abbr,
       bool mustExist = false,
       String help = '',
+      bool hide = false,
       bool isDir = false,
       bool isFile = false,
       bool negatable,
@@ -487,7 +488,7 @@
       {String abbr,
       bool mustExist = false,
       String help = '',
-      bool hide,
+      bool hide = false,
       bool isDir = false,
       bool isFile = false,
       bool negatable,
@@ -522,7 +523,7 @@
       {String abbr,
       bool mustExist = false,
       String help: '',
-      bool hide,
+      bool hide = false,
       bool isDir = false,
       bool isFile = false,
       bool negatable,
diff --git a/pubspec.lock b/pubspec.lock
index b64a988..d2d89f0 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -7,7 +7,7 @@
       name: analyzer
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.32.0"
+    version: "0.32.1"
   args:
     dependency: "direct main"
     description:
@@ -84,7 +84,7 @@
       name: front_end
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.1.0"
+    version: "0.1.1"
   glob:
     dependency: transitive
     description:
@@ -147,7 +147,7 @@
       name: kernel
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.3.0"
+    version: "0.3.1"
   logging:
     dependency: "direct main"
     description:
@@ -394,4 +394,4 @@
     source: hosted
     version: "2.1.13"
 sdks:
-  dart: ">=2.0.0-dev.54.0 <=2.0.0-dev.58.0"
+  dart: "2.0.0-dev.59.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 5f698fe..b8f610c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,16 +1,16 @@
 name: dartdoc
 # Also update the `version` field in lib/dartdoc.dart.
-version: 0.19.1
+version: 0.20.0
 author: Dart Team <misc@dartlang.org>
 description: A documentation generator for Dart.
 homepage: https://github.com/dart-lang/dartdoc
 environment:
-  sdk: '>=2.0.0-dev.54.0 <3.0.0'
+  sdk: '>=2.0.0-dev.59.0 <3.0.0'
 dependencies:
-  analyzer: 0.32.0
-  args: '>=0.13.0 <2.0.0'
+  analyzer: 0.32.1
+  args: '>=1.4.1 <2.0.0'
   collection: ^1.2.0
-  front_end: ^0.1.0
+  front_end: ^0.1.1
   html: '>=0.12.1 <0.14.0'
   # We don't use http_parser directly; this dep exists to ensure that we get at
   # least version 3.0.3 to work around an issue with 3.0.2.
diff --git a/test/dartdoc_test.dart b/test/dartdoc_test.dart
index c9a7aa9..691cfc1 100644
--- a/test/dartdoc_test.dart
+++ b/test/dartdoc_test.dart
@@ -92,7 +92,7 @@
           startsWith(
               '<a href="https://pub.dartlang.org/documentation/tuple/1.0.1/tuple/Tuple2-class.html">Tuple2</a>'));
       RegExp stringLink = new RegExp(
-          'https://api.dartlang.org/(dev|stable|be)/${Platform.version.split(' ').first}/dart-core/String-class.html">String</a>');
+          'https://api.dartlang.org/(dev|stable|edge|be)/${Platform.version.split(' ').first}/dart-core/String-class.html">String</a>');
       expect(useSomethingInAnotherPackage.modelType.linkedName,
           contains(stringLink));
     });
diff --git a/testing/test_package_docs/index.html b/testing/test_package_docs/index.html
index 3dea99d..214ec7b 100644
--- a/testing/test_package_docs/index.html
+++ b/testing/test_package_docs/index.html
@@ -4,7 +4,7 @@
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="generator" content="made with love by dartdoc 0.19.1">
+  <meta name="generator" content="made with love by dartdoc 0.20.0">
   <meta name="description" content="test_package API docs, for the Dart programming language.">
   <title>test_package - Dart API docs</title>
 
diff --git a/tool/grind.dart b/tool/grind.dart
index e700b4a..2b943f2 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -722,6 +722,12 @@
   await testFutures.wait();
 }
 
+List<File> get binFiles => new Directory('bin')
+    .listSync(recursive: true)
+    .where((e) => e is File && e.path.endsWith('.dart'))
+    .cast<File>()
+      ..toList();
+
 List<File> get testFiles => new Directory('test')
     .listSync(recursive: true)
     .where((e) => e is File && e.path.endsWith('test.dart'))
@@ -731,31 +737,49 @@
 testPreviewDart2() async {
   List<String> parameters = ['--preview-dart-2', '--enable-asserts'];
 
-  // sdk#32901 is really bad on Windows.
-  for (File dartFile in testFiles.where((f) =>
-      !f.path.endsWith('html_generator_test.dart') && !Platform.isWindows)) {
-    // absolute path to work around dart-lang/sdk#32901
+  for (File dartFile in testFiles) {
+    await testFutures.addFuture(
+        new SubprocessLauncher('dart2-${pathLib.basename(dartFile.path)}')
+            .runStreamed(
+                Platform.resolvedExecutable,
+                <String>[]
+                  ..addAll(parameters)
+                  ..add(dartFile.path)));
+  }
+
+  for (File dartFile in binFiles) {
     await testFutures.addFuture(new SubprocessLauncher(
-            'dart2-${pathLib.basename(dartFile.absolute.path)}')
+            'dart2-bin-${pathLib.basename(dartFile.path)}-help')
         .runStreamed(
             Platform.resolvedExecutable,
             <String>[]
               ..addAll(parameters)
-              ..add(dartFile.absolute.path)));
+              ..add(dartFile.path)
+              ..add('--help')));
   }
 }
 
 testDart1() async {
   List<String> parameters = ['--checked'];
   for (File dartFile in testFiles) {
-    // absolute path to work around dart-lang/sdk#32901
+    await testFutures.addFuture(
+        new SubprocessLauncher('dart1-${pathLib.basename(dartFile.path)}')
+            .runStreamed(
+                Platform.resolvedExecutable,
+                <String>[]
+                  ..addAll(parameters)
+                  ..add(dartFile.path)));
+  }
+
+  for (File dartFile in binFiles) {
     await testFutures.addFuture(new SubprocessLauncher(
-            'dart1-${pathLib.basename(dartFile.absolute.path)}')
+            'dart1-bin-${pathLib.basename(dartFile.path)}-help')
         .runStreamed(
             Platform.resolvedExecutable,
             <String>[]
               ..addAll(parameters)
-              ..add(dartFile.absolute.path)));
+              ..add(dartFile.path)
+              ..add('--help')));
   }
 }