anchor.diff:  // license that can be found in the LICENSE file.
   
   import 'dart:async';
  +import 'dart:convert';
   import 'dart:io';
   
   import 'package:grinder/grinder.dart';
   import 'package:polymer/builder.dart' as polymer;
  +
  +bool runCommandSync(GrinderContext context, String command) {
  +  var result = Process.runSync('/bin/sh', ['-c', command]);
  +  context.log(result.stdout);
  +  context.log(result.stderr);
  +  return (result.exitCode == 0);
  +}
  +
  +String getCommandOutput(String command) {
  +  var result = Process.runSync('/bin/sh', ['-c', command]);
  +  return result.stdout.trim();
  +}
   
   void main() {
     defineTask('init', taskFunction: init);
     defineTask('packages', taskFunction: packages, depends: ['init']);
     defineTask('analyze', taskFunction: analyze, depends: ['packages']);
     defineTask('compile', taskFunction: compile, depends: ['packages']);
  -  defineTask('archive', taskFunction: archive, depends: ['compile', 'mode-notest']);
  +  defineTask('archive', taskFunction : archive,
  +             depends : ['compile', 'mode-notest']);
  +  defineTask('release', taskFunction : release,
  +             depends : ['compile', 'mode-notest']);
   
     defineTask('mode-test', taskFunction: (c) => changeMode(c, true));
     defineTask('mode-notest', taskFunction: (c) => changeMode(c, false));
  
positive.code:   copyDirectory(
        joinDir(Directory.current, ['packages']),
        joinDir(Directory.current, ['build', 'packages']));
    Process.runSync('rm', ['-rf', 'build/web/packages']);
  }
  
  // It will output a file web/spark.html_bootstrap.dart and a spark.html
  // without HTML imports.
  Future<bool> asyncPolymerBuild(String entryPoint, String outputDir) {
    var args = ['--out', outputDir, '--deploy'];
    var options = polymer.parseOptions(args);
    return polymer.build(entryPoints: [entryPoint], options: options)
  
negative.code: 
  void dart2JSBuild(GrinderContext context) {
    // We remove the symlink and replace it with a copy.
    runCommandSync(context, 'rm -rf web/packages');
    copyDirectory(
        joinDir(Directory.current, ['packages']),
        joinDir(Directory.current, ['web', 'packages']));
  