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

Side by Side Diff: recipes.py

Issue 1421843006: Add simple depends_on API. (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/recipes-py@master
Patch Set: Made it do properties and multi Created 5 years, 1 month 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
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 """Tool to interact with recipe repositories. 3 """Tool to interact with recipe repositories.
4 4
5 This tool operates on the nearest ancestor directory containing an 5 This tool operates on the nearest ancestor directory containing an
6 infra/config/recipes.cfg. 6 infra/config/recipes.cfg.
7 """ 7 """
8 8
9 import argparse 9 import argparse
10 import json 10 import json
(...skipping 13 matching lines...) Expand all
24 assert os.path.exists(args.package), ( 24 assert os.path.exists(args.package), (
25 'Given recipes config file %s does not exist.' % args.package) 25 'Given recipes config file %s does not exist.' % args.package)
26 return ( 26 return (
27 package.InfraRepoConfig().from_recipes_cfg(args.package), 27 package.InfraRepoConfig().from_recipes_cfg(args.package),
28 package.ProtoFile(args.package) 28 package.ProtoFile(args.package)
29 ) 29 )
30 30
31 31
32 def simulation_test(package_deps, args): 32 def simulation_test(package_deps, args):
33 from recipe_engine import simulation_test 33 from recipe_engine import simulation_test
34 simulation_test.main(package_deps, args=json.loads(args.args)) 34 from recipe_engine import loader
35
36 _, config_file = get_package_config(args)
37 universe = loader.RecipeUniverse(package_deps, config_file.path)
38
39 simulation_test.main(universe, args=json.loads(args.args))
35 40
36 41
37 def lint(package_deps, args): 42 def lint(package_deps, args):
38 from recipe_engine import lint_test 43 from recipe_engine import lint_test
39 lint_test.main(package_deps, args.whitelist or []) 44 lint_test.main(package_deps, args.whitelist or [])
40 45
41 46
42 def handle_recipe_return(recipe_result, result_filename, stream): 47 def handle_recipe_return(recipe_result, result_filename, stream):
43 if 'recipe_result' in recipe_result.result: 48 if 'recipe_result' in recipe_result.result:
44 result_string = json.dumps( 49 result_string = json.dumps(
45 recipe_result.result['recipe_result'], indent=2) 50 recipe_result.result['recipe_result'], indent=2)
46 if result_filename: 51 if result_filename:
47 with open(result_filename, 'w') as f: 52 with open(result_filename, 'w') as f:
48 f.write(result_string) 53 f.write(result_string)
49 else: 54 with stream.step('recipe result') as s:
50 with stream.step('recipe result') as s: 55 s.write_log_lines('result', [result_string])
51 s.write_log_lines('result', [result_string])
52 56
53 if 'reason' in recipe_result.result: 57 if 'reason' in recipe_result.result:
54 with stream.step('recipe failure reason') as s: 58 with stream.step('recipe failure reason') as s:
55 s.write_log_lines( 59 s.write_log_lines(
56 'failure reason', 60 'failure reason',
57 [recipe_result.result['reason']]) 61 [recipe_result.result['reason']])
58 return 1 62 return 1
59 elif 'status_code' in recipe_result.result: 63 elif 'status_code' in recipe_result.result:
60 return recipe_result.result['status_code'] 64 return recipe_result.result['status_code']
61 else: 65 else:
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 elif args.properties_file: 98 elif args.properties_file:
95 properties = get_properties_from_file(args.properties_file) 99 properties = get_properties_from_file(args.properties_file)
96 else: 100 else:
97 properties = arg_properties 101 properties = arg_properties
98 102
99 properties['recipe'] = args.recipe 103 properties['recipe'] = args.recipe
100 104
101 os.environ['PYTHONUNBUFFERED'] = '1' 105 os.environ['PYTHONUNBUFFERED'] = '1'
102 os.environ['PYTHONIOENCODING'] = 'UTF-8' 106 os.environ['PYTHONIOENCODING'] = 'UTF-8'
103 107
104 universe = loader.RecipeUniverse(package_deps) 108 _, config_file = get_package_config(args)
109 universe = loader.RecipeUniverse(package_deps, config_file.path)
105 110
106 workdir = (args.workdir or 111 workdir = (args.workdir or
107 os.path.join(os.path.dirname(os.path.realpath(__file__)), 'workdir')) 112 os.path.join(os.path.dirname(os.path.realpath(__file__)), 'workdir'))
108 logging.info('Using %s as work directory' % workdir) 113 logging.info('Using %s as work directory' % workdir)
109 if not os.path.exists(workdir): 114 if not os.path.exists(workdir):
110 os.makedirs(workdir) 115 os.makedirs(workdir)
111 116
112 old_cwd = os.getcwd() 117 old_cwd = os.getcwd()
113 os.chdir(workdir) 118 os.chdir(workdir)
114 stream = annotator.StructuredAnnotationStream() 119 stream = annotator.StructuredAnnotationStream()
115 120
116 try: 121 try:
117 ret = recipe_run.run_steps(properties, stream, universe=universe) 122 ret = recipe_run.run_steps(properties, stream, universe=universe)
118
119 finally: 123 finally:
120 os.chdir(old_cwd) 124 os.chdir(old_cwd)
121 125
122 return handle_recipe_return(ret, args.result_file, stream) 126 return handle_recipe_return(ret, args.result_file, stream)
123 127
124 128
125 def roll(args): 129 def roll(args):
126 from recipe_engine import package 130 from recipe_engine import package
127 repo_root, config_file = get_package_config(args) 131 repo_root, config_file = get_package_config(args)
128 context = package.PackageContext.from_proto_file(repo_root, config_file) 132 context = package.PackageContext.from_proto_file(repo_root, config_file)
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 334
331 Warmly, 335 Warmly,
332 recipes.py 336 recipes.py
333 """ 337 """
334 return 1 338 return 1
335 339
336 return 0 340 return 0
337 341
338 if __name__ == '__main__': 342 if __name__ == '__main__':
339 sys.exit(main()) 343 sys.exit(main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698