diff options
Diffstat (limited to 'klippy')
-rw-r--r-- | klippy/util.py | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/klippy/util.py b/klippy/util.py index 86f42246..dfb505a8 100644 --- a/klippy/util.py +++ b/klippy/util.py @@ -53,18 +53,31 @@ def get_cpu_info(): model_name = dict(lines).get("model name", "?") return "%d core %s" % (core_count, model_name) -def get_git_version(): +def get_version_from_file(klippy_src): + try: + with open(os.path.join(klippy_src, '.version')) as h: + return h.read().rstrip() + except IOError: + pass + return "?" + +def get_git_version(from_file=True): + klippy_src = os.path.dirname(__file__) + # Obtain version info from "git" program - gitdir = os.path.join(sys.path[0], '..') - if not os.path.exists(gitdir): - logging.debug("No '.git' file/directory found") - return "?" - prog = "git -C %s describe --always --tags --long --dirty" % (gitdir,) + gitdir = os.path.join(klippy_src, '..') + prog = ('git', '-C', gitdir, 'describe', '--always', '--tags', '--long', '--dirty') try: - process = subprocess.Popen(shlex.split(prog), stdout=subprocess.PIPE) - output = process.communicate()[0] - retcode = process.poll() + process = subprocess.Popen(prog, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + ver, err = process.communicate() + retcode = process.wait() + if retcode == 0: + return ver.strip() + else: + logging.debug("Error getting git version: %s", err) except OSError: logging.debug("Exception on run: %s", traceback.format_exc()) - return "?" - return output.strip() + + if from_file: + return get_version_from_file(klippy_src) + return "?" |