| Index: sdk/lib/_internal/pub_generated/lib/src/command/run.dart | 
| diff --git a/sdk/lib/_internal/pub_generated/lib/src/command/run.dart b/sdk/lib/_internal/pub_generated/lib/src/command/run.dart | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..0d63daf12399cc68247414d6eb624e5e3c183bc7 | 
| --- /dev/null | 
| +++ b/sdk/lib/_internal/pub_generated/lib/src/command/run.dart | 
| @@ -0,0 +1,107 @@ | 
| +// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
| +// for details. All rights reserved. Use of this source code is governed by a | 
| +// BSD-style license that can be found in the LICENSE file. | 
| + | 
| +library pub.command.run; | 
| + | 
| +import 'dart:async'; | 
| + | 
| +import 'package:barback/barback.dart'; | 
| +import 'package:path/path.dart' as p; | 
| + | 
| +import '../command.dart'; | 
| +import '../executable.dart'; | 
| +import '../io.dart'; | 
| +import '../utils.dart'; | 
| + | 
| +/// Handles the `run` pub command. | 
| +class RunCommand extends PubCommand { | 
| +  String get name => "run"; | 
| +  String get description => | 
| +      "Run an executable from a package.\n" | 
| +          "NOTE: We are currently optimizing this command's startup time."; | 
| +  String get invocation => "pub run <executable> [args...]"; | 
| +  bool get allowTrailingOptions => false; | 
| + | 
| +  RunCommand() { | 
| +    argParser.addOption( | 
| +        "mode", | 
| +        help: 'Mode to run transformers in.\n' | 
| +            '(defaults to "release" for dependencies, "debug" for ' 'entrypoint)'); | 
| +  } | 
| + | 
| +  Future run() { | 
| +    final completer0 = new Completer(); | 
| +    scheduleMicrotask(() { | 
| +      try { | 
| +        join0() { | 
| +          var package = entrypoint.root.name; | 
| +          var executable = argResults.rest[0]; | 
| +          var args = argResults.rest.skip(1).toList(); | 
| +          join1() { | 
| +            var mode; | 
| +            join2() { | 
| +              new Future.value( | 
| +                  runExecutable(entrypoint, package, executable, args, mode: mode)).then((x0) { | 
| +                try { | 
| +                  var exitCode = x0; | 
| +                  new Future.value(flushThenExit(exitCode)).then((x1) { | 
| +                    try { | 
| +                      x1; | 
| +                      completer0.complete(); | 
| +                    } catch (e0, s0) { | 
| +                      completer0.completeError(e0, s0); | 
| +                    } | 
| +                  }, onError: completer0.completeError); | 
| +                } catch (e1, s1) { | 
| +                  completer0.completeError(e1, s1); | 
| +                } | 
| +              }, onError: completer0.completeError); | 
| +            } | 
| +            if (argResults['mode'] != null) { | 
| +              mode = new BarbackMode(argResults['mode']); | 
| +              join2(); | 
| +            } else { | 
| +              join3() { | 
| +                join2(); | 
| +              } | 
| +              if (package == entrypoint.root.name) { | 
| +                mode = BarbackMode.DEBUG; | 
| +                join3(); | 
| +              } else { | 
| +                mode = BarbackMode.RELEASE; | 
| +                join3(); | 
| +              } | 
| +            } | 
| +          } | 
| +          if (executable.contains(":")) { | 
| +            var components = split1(executable, ":"); | 
| +            package = components[0]; | 
| +            executable = components[1]; | 
| +            join4() { | 
| +              join1(); | 
| +            } | 
| +            if (p.split(executable).length > 1) { | 
| +              usageException( | 
| +                  "Cannot run an executable in a subdirectory of a " + "dependency."); | 
| +              join4(); | 
| +            } else { | 
| +              join4(); | 
| +            } | 
| +          } else { | 
| +            join1(); | 
| +          } | 
| +        } | 
| +        if (argResults.rest.isEmpty) { | 
| +          usageException("Must specify an executable to run."); | 
| +          join0(); | 
| +        } else { | 
| +          join0(); | 
| +        } | 
| +      } catch (e, s) { | 
| +        completer0.completeError(e, s); | 
| +      } | 
| +    }); | 
| +    return completer0.future; | 
| +  } | 
| +} | 
|  |