Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(204)

Side by Side Diff: recipes.py

Issue 2080343005: Add 'remote' command to replace 'remote_run' (Closed) Base URL: https://github.com/luci/recipes-py.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « recipe_engine/remote.py ('k') | unittests/remote_test.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2015 The LUCI Authors. All rights reserved. 2 # Copyright 2015 The LUCI Authors. All rights reserved.
3 # Use of this source code is governed under the Apache License, Version 2.0 3 # Use of this source code is governed under the Apache License, Version 2.0
4 # that can be found in the LICENSE file. 4 # that can be found in the LICENSE file.
5 5
6 """Tool to interact with recipe repositories. 6 """Tool to interact with recipe repositories.
7 7
8 This tool operates on the nearest ancestor directory containing an 8 This tool operates on the nearest ancestor directory containing an
9 infra/config/recipes.cfg. 9 infra/config/recipes.cfg.
10 """ 10 """
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 ret = recipe_run.run_steps( 144 ret = recipe_run.run_steps(
145 properties, stream_engine, 145 properties, stream_engine,
146 step_runner.SubprocessStepRunner(stream_engine), 146 step_runner.SubprocessStepRunner(stream_engine),
147 universe=universe) 147 universe=universe)
148 finally: 148 finally:
149 os.chdir(old_cwd) 149 os.chdir(old_cwd)
150 150
151 return handle_recipe_return(ret, args.output_result_json, stream_engine) 151 return handle_recipe_return(ret, args.output_result_json, stream_engine)
152 152
153 153
154 def remote(args):
155 from recipe_engine import remote
156
157 return remote.main(args)
158
159
154 def remote_run(args): 160 def remote_run(args):
155 from recipe_engine import remote_run 161 from recipe_engine import remote_run
156 162
157 return remote_run.main(args) 163 return remote_run.main(args)
158 164
159 165
160 def autoroll(args): 166 def autoroll(args):
161 from recipe_engine import autoroll 167 from recipe_engine import autoroll
162 168
163 repo_root, config_file = get_package_config(args) 169 repo_root, config_file = get_package_config(args)
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 action='store_true', 315 action='store_true',
310 help='If true, emit CURRENT_TIMESTAMP annotations. ' 316 help='If true, emit CURRENT_TIMESTAMP annotations. '
311 'Default: false. ' 317 'Default: false. '
312 'CURRENT_TIMESTAMP annotation has one parameter, current time in ' 318 'CURRENT_TIMESTAMP annotation has one parameter, current time in '
313 'Unix timestamp format. ' 319 'Unix timestamp format. '
314 'CURRENT_TIMESTAMP annotation will be printed at the beginning and ' 320 'CURRENT_TIMESTAMP annotation will be printed at the beginning and '
315 'end of the annotation stream and also immediately before each ' 321 'end of the annotation stream and also immediately before each '
316 'STEP_STARTED and STEP_CLOSED annotations.', 322 'STEP_STARTED and STEP_CLOSED annotations.',
317 ) 323 )
318 324
325 remote_p = subp.add_parser(
326 'remote',
327 description='Invoke a recipe command from specified repo and revision')
328 remote_p.set_defaults(command='remote')
329 remote_p.add_argument(
330 '--repository', required=True,
331 help='URL of a git repository to fetch')
332 remote_p.add_argument(
333 '--revision',
334 help='Git commit hash to check out; defaults to latest revision (HEAD)')
335 remote_p.add_argument(
336 '--workdir',
337 help='The working directory of repo checkout')
338 remote_p.add_argument(
339 '--use-gitiles', action='store_true',
340 help='Use Gitiles-specific way to fetch repo (potentially cheaper for '
341 'large repos)')
342 remote_p.add_argument(
343 'remote_args', nargs='*',
344 help='Arguments to pass to fetched repo\'s recipes.py')
345
319 remote_run_p = subp.add_parser( 346 remote_run_p = subp.add_parser(
320 'remote_run', 347 'remote_run',
321 description='Run a recipe from specified repo and revision') 348 description='Run a recipe from specified repo and revision')
322 remote_run_p.set_defaults(command='remote_run') 349 remote_run_p.set_defaults(command='remote_run')
323 remote_run_p.add_argument( 350 remote_run_p.add_argument(
324 '--repository', required=True, 351 '--repository', required=True,
325 help='URL of a git repository to fetch') 352 help='URL of a git repository to fetch')
326 remote_run_p.add_argument( 353 remote_run_p.add_argument(
327 '--revision', 354 '--revision',
328 help='Git commit hash to check out; defaults to latest revision (HEAD)') 355 help='Git commit hash to check out; defaults to latest revision (HEAD)')
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 args = sys.argv 419 args = sys.argv
393 return subprocess.call( 420 return subprocess.call(
394 ['ENV/bin/python'] + original_sys_argv, 421 ['ENV/bin/python'] + original_sys_argv,
395 cwd=os.path.dirname(os.path.realpath(__file__))) 422 cwd=os.path.dirname(os.path.realpath(__file__)))
396 423
397 if args.verbose: 424 if args.verbose:
398 logging.getLogger().setLevel(logging.INFO) 425 logging.getLogger().setLevel(logging.INFO)
399 426
400 # Commands which do not require config_file, package_deps, and other objects 427 # Commands which do not require config_file, package_deps, and other objects
401 # initialized later. 428 # initialized later.
402 if args.command == 'remote_run': 429 if args.command == 'remote':
430 return remote(args)
431 elif args.command == 'remote_run':
403 return remote_run(args) 432 return remote_run(args)
404 433
405 repo_root, config_file = get_package_config(args) 434 repo_root, config_file = get_package_config(args)
406 435
407 try: 436 try:
408 # TODO(phajdan.jr): gracefully handle inconsistent deps when rolling. 437 # TODO(phajdan.jr): gracefully handle inconsistent deps when rolling.
409 # This fails if the starting point does not have consistent dependency 438 # This fails if the starting point does not have consistent dependency
410 # graph. When performing an automated roll, it'd make sense to attempt 439 # graph. When performing an automated roll, it'd make sense to attempt
411 # to automatically find a consistent state, rather than bailing out. 440 # to automatically find a consistent state, rather than bailing out.
412 # Especially that only some subcommands refer to package_deps. 441 # Especially that only some subcommands refer to package_deps.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 ret = main() 490 ret = main()
462 if not isinstance(ret, int): 491 if not isinstance(ret, int):
463 if ret is None: 492 if ret is None:
464 ret = 0 493 ret = 0
465 else: 494 else:
466 print >> sys.stderr, ret 495 print >> sys.stderr, ret
467 ret = 1 496 ret = 1
468 sys.stdout.flush() 497 sys.stdout.flush()
469 sys.stderr.flush() 498 sys.stderr.flush()
470 os._exit(ret) 499 os._exit(ret)
OLDNEW
« no previous file with comments | « recipe_engine/remote.py ('k') | unittests/remote_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698