anchor.diff:  import 'package:librato/librato.dart';
   import 'package:den_api/den_api.dart';
   
  -final Directory DOC_DIR = new Directory('docs');
  +final Directory TEMP_DIR =
  +    new Directory(path.join('${Directory.systemTemp.path}', 'temp'));
   
   main([List<String> args]) {
  -  task('init', defaultInit);
  -  task('docitself', testDartdoc, ['init']);
  -  task('analyze', analyze);
  -  task('indexresources', indexResources);
  -  task('buildsdkdocs', buildSdkDocs);
  -  task('bump:build', bumpVersionBuild);
  -  task('publish', publish, ['bump:build']);
  -  startGrinder(args);
  +  grind(args);
   }
   
  +@Task('publish to pub.dartlang')
  +@Depends(bumpVersionBuild)
   publish(GrinderContext context) async {
  -  runProcess(context, 'pub', arguments: ['publish']);
  +  Dart.run('pub', arguments: ['publish']);
   }
   
  +@Task('Bump pubspec version and version number in lib/dartdoc.dart')
   bumpVersionBuild(GrinderContext context) async {
     Pubspec pubspec = (await Pubspec.load())
       ..bump(ReleaseType.build)
  
positive.code:   context.log('Version set to ${pubspec.version}');
  }
  
  /**
   * Run dartdoc and check that the docs are generated.
   */
  testDartdoc(GrinderContext context) {
    if (DOC_DIR.existsSync()) DOC_DIR.deleteSync(recursive: true);
  
    try {
      context.log('running dartdoc');
      runDartScript(context, 'bin/dartdoc.dart');
  
      File indexHtml = joinFile(DOC_DIR, ['index.html']);
      if (!indexHtml.existsSync()) context.fail('docs not generated');
      File docFile = joinFile(DOC_DIR, ['dartdoc/index.html']);
      if (!docFile.existsSync()) context.fail('docs not generated');
    } catch (e) {
      rethrow;
    }
  }
  
  analyze(GrinderContext context) {
    Analyzer.analyzePaths(
        context, ['bin/dartdoc.dart', 'lib/dartdoc.dart', 'test/all.dart'],
        fatalWarnings: true);
  }
  
  Future buildSdkDocs(GrinderContext context) async {
    if (DOC_DIR.existsSync()) DOC_DIR.deleteSync(recursive: true);
    context.log('building SDK docs');
    try {
      int sdkDocsGenTime = _runTimed(() {
        runDartScript(context, 'bin/dartdoc.dart', arguments: ['--sdk-docs']);
      });
      var indexHtml = joinFile(DOC_DIR, ['index.html']);
      if (!indexHtml.existsSync()) {
        context.fail('no index.html found for SDK docs');
      }
      // check for the existance of certain files/dirs
      var libsLength =
          DOC_DIR.listSync().where((fs) => fs.path.contains('dart_')).length;
      if (libsLength != 17) {
        context.fail(
            'docs not generated for all the SDK libraries, expected 17 directories, generated $libsLength directories');
      }
      var futureConstFile = joinFile(DOC_DIR, ['dart_async/Future/Future.html']);
      if (!futureConstFile.existsSync()) {
        context.fail('no Future.html found for dart:async Future constructor');
      }
  
negative.code:   }
  }
  
  @Task('Make sure all the resource files are present')
  indexResources(GrinderContext context) {
    var sourcePath = path.join('lib', 'resources');
    if (!new Directory(sourcePath).existsSync()) {
  