| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import optparse | 6 import optparse |
| 7 import re | 7 import re |
| 8 import sys | 8 import sys |
| 9 | 9 |
| 10 class VarImpl(object): | 10 class VarImpl(object): |
| 11 """Implement the Var function used within the DEPS file.""" | 11 """Implement the Var function used within the DEPS file.""" |
| 12 | 12 |
| 13 def __init__(self, local_scope): | 13 def __init__(self, local_scope): |
| 14 self._local_scope = local_scope | 14 self._local_scope = local_scope |
| 15 | 15 |
| 16 def Lookup(self, var_name): | 16 def Lookup(self, var_name): |
| 17 """Implements the Var syntax.""" | 17 """Implements the Var syntax.""" |
| 18 if var_name in self._local_scope.get('vars', {}): | 18 if var_name in self._local_scope.get('vars', {}): |
| 19 return self._local_scope['vars'][var_name] | 19 return self._local_scope['vars'][var_name] |
| 20 raise Exception('Var is not defined: %s' % var_name) | 20 raise Exception('Var is not defined: %s' % var_name) |
| 21 | 21 |
| 22 def FindProjectRevision(project_name): | 22 def FindProjectRevision(project_name): |
| 23 # Parse Chromium DEPS file to find out the revision of the project in use. | 23 # Parse Chromium DEPS file to find out the revision of the project in use. |
| 24 deps_content = sys.stdin.read() | 24 deps_content = sys.stdin.read() |
| 25 local_scope = {} | 25 local_scope = {} |
| 26 var = VarImpl(local_scope) | 26 var = VarImpl(local_scope) |
| 27 global_scope = { 'Var': var.Lookup, 'deps': {} } | 27 global_scope = { 'Var': var.Lookup, 'deps': {} } |
| 28 exec(deps_content, global_scope, local_scope) | 28 exec(deps_content, global_scope, local_scope) |
| 29 project_path = local_scope['deps'][project_name] | 29 project_path = local_scope['deps'][project_name] |
| 30 match = re.search('r[^@]*@(\d+)', project_path) | 30 match = re.search('r[^@]*@([0-9a-f]+)', project_path) |
| 31 if match: | 31 if match: |
| 32 return match.group(1) | 32 return match.group(1) |
| 33 return project_path | 33 return project_path |
| 34 | 34 |
| 35 def main(): | 35 def main(): |
| 36 parser = optparse.OptionParser(usage='%prog [options]') | 36 parser = optparse.OptionParser(usage='%prog [options]') |
| 37 parser.add_option( | 37 parser.add_option( |
| 38 '', '--find_project_revision', | 38 '', '--find_project_revision', |
| 39 default=False, | 39 default=False, |
| 40 help=('FindProjectRevision')) | 40 help=('FindProjectRevision')) |
| 41 (options, args) = parser.parse_args() | 41 (options, args) = parser.parse_args() |
| 42 if args: | 42 if args: |
| 43 parser.print_help() | 43 parser.print_help() |
| 44 return 1 | 44 return 1 |
| 45 if options.find_project_revision: | 45 if options.find_project_revision: |
| 46 print FindProjectRevision(options.find_project_revision) | 46 print FindProjectRevision(options.find_project_revision) |
| 47 | 47 |
| 48 return 0 | 48 return 0 |
| 49 | 49 |
| 50 if __name__ == '__main__': | 50 if __name__ == '__main__': |
| 51 sys.exit(main()) | 51 sys.exit(main()) |
| OLD | NEW |