| #!/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()) |