Index: recipes.py |
diff --git a/recipes.py b/recipes.py |
index 090c7d02d48c0a71304eca3adfa07367ee4ec69d..15d6786dc9812f3adca2481ded1a6e0bf1465409 100755 |
--- a/recipes.py |
+++ b/recipes.py |
@@ -220,12 +220,6 @@ def run(config_file, package_deps, args): |
ret, args.output_result_json, stream_engine, engine_flags) |
-def remote(args): |
- from recipe_engine import remote |
- |
- return remote.main(args) |
- |
- |
class ProjectOverrideAction(argparse.Action): |
def __call__(self, parser, namespace, values, option_string=None): |
p = values.split('=', 2) |
@@ -351,7 +345,10 @@ def add_common_args(parser): |
with open(value) as fd: |
return jsonpb.ParseDict(json.load(fd), arguments_pb2.Arguments()) |
- parser.set_defaults(operational_args=arguments_pb2.Arguments()) |
+ parser.set_defaults( |
+ operational_args=arguments_pb2.Arguments(), |
+ bare_command=False, # don't call postprocess_func, don't use package_deps |
dnj
2017/04/27 16:38:40
add a TODO here, remove this when "remote" command
|
+ ) |
parser.add_argument( |
'--operational-args-path', |
@@ -362,14 +359,16 @@ def add_common_args(parser): |
'be integrated into the runtime parameters.') |
def post_process_args(parser, args): |
- if args.command == 'remote': |
- # TODO(iannucci): this is a hack; remote doesn't behave like ANY other |
- # commands. A way to solve this will be to allow --package to take |
- # a remote repo and then simply remove the remote subcommand entirely. |
- return |
- |
- if not args.package: |
- parser.error('%s requires --package' % args.command) |
+ if args.bare_command: |
+ # TODO(iannucci): this is gross, and only for the remote subcommand; |
+ # remote doesn't behave like ANY other commands. A way to solve this will |
+ # be to allow --package to take a remote repo and then simply remove the |
+ # remote subcommand entirely. |
+ if args.package is not None: |
+ parser.error('%s forbids --package' % args.command) |
+ else: |
+ if not args.package: |
+ parser.error('%s requires --package' % args.command) |
return post_process_args |
@@ -381,7 +380,8 @@ def main(): |
common_postprocess_func = add_common_args(parser) |
from recipe_engine import fetch, lint_test, bundle, depgraph, autoroll |
- to_add = [fetch, lint_test, bundle, depgraph, autoroll] |
+ from recipe_engine import remote |
dnj
2017/04/27 16:38:40
Since you're adding a lot of optional flags, can w
|
+ to_add = [fetch, lint_test, bundle, depgraph, autoroll, remote] |
subp = parser.add_subparsers() |
for module in to_add: |
@@ -464,33 +464,6 @@ def main(): |
'issue=12345. The property value will be decoded as JSON, but if ' |
'this decoding fails the value will be interpreted as a string.') |
- |
- remote_p = subp.add_parser( |
- 'remote', |
- description='Invoke a recipe command from specified repo and revision') |
- remote_p.set_defaults(command='remote') |
- remote_p.add_argument( |
- '--repository', required=True, |
- help='URL of a git repository to fetch') |
- remote_p.add_argument( |
- '--revision', |
- help=( |
- 'Git commit hash to check out; defaults to latest revision on master' |
- ' (refs/heads/master)' |
- )) |
- remote_p.add_argument( |
- '--workdir', |
- type=os.path.abspath, |
- help='The working directory of repo checkout') |
- remote_p.add_argument( |
- '--use-gitiles', action='store_true', |
- help='Use Gitiles-specific way to fetch repo (potentially cheaper for ' |
- 'large repos)') |
- remote_p.add_argument( |
- 'remote_args', nargs='*', |
- help='Arguments to pass to fetched repo\'s recipes.py') |
- |
- |
refs_p = subp.add_parser( |
'refs', |
description='List places referencing given recipe module(s).') |
@@ -606,10 +579,8 @@ def main(): |
def _real_main(args): |
from recipe_engine import package |
- # Commands which do not require config_file, package_deps, and other objects |
- # initialized later. |
- if args.command == 'remote': |
- return remote(args) |
+ if args.bare_command: |
+ return args.func(None, args) |
config_file = args.package |
repo_root = package.InfraRepoConfig().from_recipes_cfg(args.package.path) |