mirror of
https://github.com/QIDITECH/klipper.git
synced 2026-02-02 00:48:42 +03:00
plus4的klipper版本
This commit is contained in:
@@ -133,25 +133,94 @@ def get_version_from_file(klippy_src):
|
||||
pass
|
||||
return "?"
|
||||
|
||||
def _get_repo_info(gitdir):
|
||||
repo_info = {"branch": "?", "remote": "?", "url": "?"}
|
||||
prog_branch = ('git', '-C', gitdir, 'branch', '--no-color')
|
||||
try:
|
||||
process = subprocess.Popen(prog_branch, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
branch_list, err = process.communicate()
|
||||
retcode = process.wait()
|
||||
if retcode != 0:
|
||||
logging.debug("Error running git branch: %s", err)
|
||||
return repo_info
|
||||
lines = str(branch_list.strip().decode()).split("\n")
|
||||
for line in lines:
|
||||
if line[0] == "*":
|
||||
repo_info["branch"] = line[1:].strip()
|
||||
break
|
||||
else:
|
||||
logging.debug("Unable to find current branch:\n%s", branch_list)
|
||||
return repo_info
|
||||
if repo_info["branch"].startswith("(HEAD detached"):
|
||||
parts = repo_info["branch"].strip("()").split()[-1].split("/", 1)
|
||||
if len(parts) != 2:
|
||||
return repo_info
|
||||
repo_info["remote"] = parts[0]
|
||||
else:
|
||||
key = "branch.%s.remote" % (repo_info["branch"],)
|
||||
prog_config = ('git', '-C', gitdir, 'config', '--get', key)
|
||||
process = subprocess.Popen(prog_config, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
remote_info, err = process.communicate()
|
||||
retcode = process.wait()
|
||||
if retcode != 0:
|
||||
logging.debug("Error running git config: %s", err)
|
||||
return repo_info
|
||||
repo_info["remote"] = str(remote_info.strip().decode())
|
||||
prog_remote_url = (
|
||||
'git', '-C', gitdir, 'remote', 'get-url', repo_info["remote"])
|
||||
process = subprocess.Popen(prog_remote_url, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
remote_url, err = process.communicate()
|
||||
retcode = process.wait()
|
||||
if retcode != 0:
|
||||
logging.debug("Error running git remote get-url: %s", err)
|
||||
return repo_info
|
||||
repo_info["url"] = str(remote_url.strip().decode())
|
||||
except:
|
||||
logging.debug("Error fetching repo info: %s", traceback.format_exc())
|
||||
return repo_info
|
||||
|
||||
def get_git_version(from_file=True):
|
||||
git_info = {
|
||||
"version": "?",
|
||||
"file_status": [],
|
||||
"branch": "?",
|
||||
"remote": "?",
|
||||
"url": "?"
|
||||
}
|
||||
klippy_src = os.path.dirname(__file__)
|
||||
|
||||
# Obtain version info from "git" program
|
||||
gitdir = os.path.join(klippy_src, '..')
|
||||
prog = ('git', '-C', gitdir, 'describe', '--always',
|
||||
'--tags', '--long', '--dirty')
|
||||
prog_desc = ('git', '-C', gitdir, 'describe', '--always',
|
||||
'--tags', '--long', '--dirty')
|
||||
prog_status = ('git', '-C', gitdir, 'status', '--porcelain', '--ignored')
|
||||
try:
|
||||
process = subprocess.Popen(prog, stdout=subprocess.PIPE,
|
||||
process = subprocess.Popen(prog_desc, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
ver, err = process.communicate()
|
||||
retcode = process.wait()
|
||||
if retcode == 0:
|
||||
return str(ver.strip().decode())
|
||||
git_info["version"] = str(ver.strip().decode())
|
||||
process = subprocess.Popen(prog_status, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
stat, err = process.communicate()
|
||||
status = [l.split(None, 1)
|
||||
for l in str(stat.strip().decode()).split('\n')]
|
||||
retcode = process.wait()
|
||||
if retcode == 0:
|
||||
git_info["file_status"] = status
|
||||
else:
|
||||
logging.debug("Error getting git status: %s", err)
|
||||
git_info.update(_get_repo_info(gitdir))
|
||||
return git_info
|
||||
else:
|
||||
logging.debug("Error getting git version: %s", err)
|
||||
except:
|
||||
logging.debug("Exception on run: %s", traceback.format_exc())
|
||||
|
||||
if from_file:
|
||||
return get_version_from_file(klippy_src)
|
||||
return "?"
|
||||
git_info["version"] = get_version_from_file(klippy_src)
|
||||
return git_info
|
||||
|
||||
Reference in New Issue
Block a user