Files
clang-p2996/lldb/scripts/Xcode/repo.py
Sean Callanan 56435c91c9 Fixed repo.py to not send git errors to stderr.
Some repos are not git repos, so git is expected 
to fail.  These errors should not go to stderr,
because Xcode interprets them as failures.

llvm-svn: 296924
2017-03-03 23:13:30 +00:00

43 lines
1.5 KiB
Python

import json
import os
import re
import shutil
import subprocess
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)