| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 | 2 |
| 3 # Copyright 2016 The LUCI Authors. All rights reserved. | 3 # Copyright 2016 The LUCI Authors. All rights reserved. |
| 4 # Use of this source code is governed under the Apache License, Version 2.0 | 4 # Use of this source code is governed under the Apache License, Version 2.0 |
| 5 # that can be found in the LICENSE file. | 5 # that can be found in the LICENSE file. |
| 6 | 6 |
| 7 """Bootstrap script to clone and forward to the recipe engine tool. | 7 """Bootstrap script to clone and forward to the recipe engine tool. |
| 8 | 8 |
| 9 *********************************************************************** | 9 *********************************************************************** |
| 10 ** DO NOT MODIFY EXCEPT IN THE PER-REPO CONFIGURATION SECTION BELOW. ** | 10 ** DO NOT MODIFY EXCEPT IN THE PER-REPO CONFIGURATION SECTION BELOW. ** |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 repo. | 44 repo. |
| 45 | 45 |
| 46 We assume all fields are repeated since we don't have a proto spec to work | 46 We assume all fields are repeated since we don't have a proto spec to work |
| 47 with. | 47 with. |
| 48 | 48 |
| 49 Args: | 49 Args: |
| 50 fh: a filehandle containing the text format protobuf. | 50 fh: a filehandle containing the text format protobuf. |
| 51 Returns: | 51 Returns: |
| 52 A recursive dictionary of lists. | 52 A recursive dictionary of lists. |
| 53 """ | 53 """ |
| 54 def parse_atom(text): | 54 def parse_atom(field, text): |
| 55 if text == 'true': | 55 if text == 'true': |
| 56 return True | 56 return True |
| 57 if text == 'false': | 57 if text == 'false': |
| 58 return False | 58 return False |
| 59 |
| 60 # repo_type is an enum. Since it does not have quotes, |
| 61 # invoking literal_eval would fail. |
| 62 if field == 'repo_type': |
| 63 return text |
| 64 |
| 59 return ast.literal_eval(text) | 65 return ast.literal_eval(text) |
| 60 | 66 |
| 61 ret = {} | 67 ret = {} |
| 62 for line in fh: | 68 for line in fh: |
| 63 line = line.strip() | 69 line = line.strip() |
| 64 m = re.match(r'(\w+)\s*:\s*(.*)', line) | 70 m = re.match(r'(\w+)\s*:\s*(.*)', line) |
| 65 if m: | 71 if m: |
| 66 ret.setdefault(m.group(1), []).append(parse_atom(m.group(2))) | 72 ret.setdefault(m.group(1), []).append(parse_atom(m.group(1), m.group(2))) |
| 67 continue | 73 continue |
| 68 | 74 |
| 69 m = re.match(r'(\w+)\s*{', line) | 75 m = re.match(r'(\w+)\s*{', line) |
| 70 if m: | 76 if m: |
| 71 subparse = parse_protobuf(fh) | 77 subparse = parse_protobuf(fh) |
| 72 ret.setdefault(m.group(1), []).append(subparse) | 78 ret.setdefault(m.group(1), []).append(subparse) |
| 73 continue | 79 continue |
| 74 | 80 |
| 75 if line == '}': | 81 if line == '}': |
| 76 return ret | 82 return ret |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 ensure_engine() | 162 ensure_engine() |
| 157 | 163 |
| 158 args = ['--package', recipes_cfg_path, | 164 args = ['--package', recipes_cfg_path, |
| 159 '--bootstrap-script', __file__] + sys.argv[1:] | 165 '--bootstrap-script', __file__] + sys.argv[1:] |
| 160 return _subprocess_call([ | 166 return _subprocess_call([ |
| 161 sys.executable, '-u', | 167 sys.executable, '-u', |
| 162 os.path.join(engine_path, engine_subpath, 'recipes.py')] + args) | 168 os.path.join(engine_path, engine_subpath, 'recipes.py')] + args) |
| 163 | 169 |
| 164 if __name__ == '__main__': | 170 if __name__ == '__main__': |
| 165 sys.exit(main()) | 171 sys.exit(main()) |
| OLD | NEW |