import configparser import subprocess import os run_number = os.getenv('GITHUB_RUN_NUMBER', '0') build_location = os.getenv('BUILD_LOCATION', 'local') def readProps(prefsLoc): """Read the version of our project as a string""" config = configparser.RawConfigParser() config.read(prefsLoc) version = dict(config.items("VERSION")) verObj = dict( short="{}.{}.{}".format(version["major"], version["minor"], version["build"]), long="unset", deb="unset", ) # Try to find current build SHA if if the workspace is clean. This could fail if git is not installed try: sha = ( subprocess.check_output(["git", "rev-parse", "--short", "HEAD"]) .decode("utf-8") .strip() ) isDirty = ( subprocess.check_output(["git", "diff", "HEAD"]).decode("utf-8").strip() ) suffix = sha # if isDirty: # # short for 'dirty', we want to keep our verstrings source for protobuf reasons # suffix = sha + "-d" verObj["long"] = "{}.{}".format(verObj["short"], suffix) verObj["deb"] = "{}.{}~{}{}".format(verObj["short"], run_number, build_location, sha) except: # print("Unexpected error:", sys.exc_info()[0]) # traceback.print_exc() verObj["long"] = verObj["short"] verObj["deb"] = "{}.{}~{}".format(verObj["short"], run_number, build_location) # print("firmware version " + verStr) return verObj # print("path is" + ','.join(sys.path))