Files
clang-p2996/lldb/scripts/Xcode/repo.py
Lang Hames a088f2fbcc Import sys in repo.py.
The find function in repo.py calls sys.exit on error. Without this import that
call to exit will fail, masking the actual error message. This patch fixes that.

llvm-svn: 302584
2017-05-09 20:37:01 +00:00

44 lines
1.5 KiB
Python

import json
import os
import re
import shutil
import subprocess
import sys
def identifier():
try:
svn_output = subprocess.check_output(["svn", "info", "--show-item", "url"], stderr=subprocess.STDOUT).rstrip()
return svn_output
except:
pass
try:
git_remote_and_branch = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], stderr=subprocess.STDOUT).rstrip()
git_remote = git_remote_and_branch.split("/")[0]
git_branch = "/".join(git_remote_and_branch.split("/")[1:])
git_url = subprocess.check_output(["git", "remote", "get-url", git_remote]).rstrip()
return git_url + ":" + git_branch
except:
pass
return None
def find(identifier):
dir = os.path.dirname(os.path.realpath(__file__))
repos_dir = os.path.join(dir, "repos")
json_regex = re.compile(r"^.*.json$")
override_path = os.path.join(repos_dir, "OVERRIDE")
if os.path.isfile(override_path):
override_set = json.load(open(override_path))
return override_set["repos"]
fallback_path = os.path.join(repos_dir, "FALLBACK")
for path in [os.path.join(repos_dir, f) for f in filter(json_regex.match, os.listdir(repos_dir))]:
fd = open(path)
set = json.load(fd)
fd.close()
if any(re.match(set_regex, identifier) for set_regex in set["regexs"]):
shutil.copyfile(path, fallback_path)
return set["repos"]
if os.path.isfile(fallback_path):
fallback_set = json.load(open(fallback_path))
return fallback_set["repos"]
sys.exit("Couldn't find a branch configuration for " + identifier + " and there was no " + fallback_path)