|  | #!/usr/bin/env python3 | 
|  | # Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file | 
|  | # for details. All rights reserved. Use of this source code is governed by a | 
|  | # BSD-style license that can be found in the LICENSE file. | 
|  | # | 
|  | # This python script is a wrapper around `git rev-parse --resolve-git-dir`. | 
|  | # This is used for the build system to work with git worktrees. | 
|  |  | 
|  | import sys | 
|  | import subprocess | 
|  | import utils | 
|  |  | 
|  |  | 
|  | def main(): | 
|  | try: | 
|  | if len(sys.argv) != 3: | 
|  | raise Exception('Expects exactly 2 arguments.') | 
|  | args = ['git', 'rev-parse', '--resolve-git-dir', sys.argv[1]] | 
|  |  | 
|  | windows = utils.GuessOS() == 'win32' | 
|  | if windows: | 
|  | process = subprocess.Popen(args, | 
|  | stdout=subprocess.PIPE, | 
|  | stderr=subprocess.PIPE, | 
|  | stdin=subprocess.PIPE, | 
|  | shell=True, | 
|  | universal_newlines=True) | 
|  | else: | 
|  | process = subprocess.Popen(args, | 
|  | stdout=subprocess.PIPE, | 
|  | stderr=subprocess.PIPE, | 
|  | stdin=subprocess.PIPE, | 
|  | shell=False, | 
|  | universal_newlines=True) | 
|  |  | 
|  | outs, _ = process.communicate() | 
|  |  | 
|  | if process.returncode != 0: | 
|  | raise Exception('Got non-0 exit code from git.') | 
|  |  | 
|  | print(outs.strip()) | 
|  | except: | 
|  | # Fall back to fall-back path. | 
|  | print(sys.argv[2]) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(main()) |