84 lines
2.9 KiB
Python
84 lines
2.9 KiB
Python
|
import fileinput
|
||
|
import os
|
||
|
import shutil
|
||
|
import sys
|
||
|
import tempfile
|
||
|
from subprocess import call, check_output
|
||
|
|
||
|
|
||
|
def cleanup():
|
||
|
"""
|
||
|
Remove all cache directories
|
||
|
:return:
|
||
|
"""
|
||
|
script_dir = os.path.dirname(__file__) if not os.path.islink(__file__) else os.path.dirname(os.readlink(__file__))
|
||
|
script_dir = os.path.realpath(os.path.join(script_dir, ".."))
|
||
|
shutil.rmtree(os.path.join(script_dir, "dist"), ignore_errors=True)
|
||
|
shutil.rmtree(os.path.join(script_dir, "tmp"), ignore_errors=True)
|
||
|
shutil.rmtree(os.path.join(script_dir, "urh.egg-info"), ignore_errors=True)
|
||
|
shutil.rmtree(os.path.join(script_dir, "src", "urh.egg-info"), ignore_errors=True)
|
||
|
shutil.rmtree(os.path.join(script_dir, "src", "urh", "tmp"), ignore_errors=True)
|
||
|
|
||
|
|
||
|
def release():
|
||
|
script_dir = os.path.dirname(__file__) if not os.path.islink(__file__) else os.path.dirname(os.readlink(__file__))
|
||
|
script_dir = os.path.realpath(os.path.join(script_dir, ".."))
|
||
|
os.chdir(script_dir)
|
||
|
|
||
|
current_branch = check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"]).decode("UTF-8").strip()
|
||
|
|
||
|
if current_branch != "master":
|
||
|
print("You can only release from master!")
|
||
|
sys.exit(1)
|
||
|
|
||
|
open(os.path.join(tempfile.gettempdir(), "urh_releasing"), "w").close()
|
||
|
|
||
|
from src.urh import version
|
||
|
version_file = os.path.realpath(os.path.join(script_dir, "src", "urh", "version.py"))
|
||
|
|
||
|
cur_version = version.VERSION
|
||
|
numbers = cur_version.split(".")
|
||
|
numbers[-1] = str(int(numbers[-1]) + 1)
|
||
|
cur_version = ".".join(numbers)
|
||
|
|
||
|
for line in fileinput.input(version_file, inplace=True):
|
||
|
if line.startswith("VERSION"):
|
||
|
line = 'VERSION = "{0}" \n'.format(cur_version)
|
||
|
print(line, end='')
|
||
|
|
||
|
# Publish new version number
|
||
|
call(["git", "add", version_file])
|
||
|
call(["git", "commit", "-m", "version" + cur_version])
|
||
|
|
||
|
input("Pushing to GitHub now. Press a key to continue.")
|
||
|
call(["git", "push"])
|
||
|
|
||
|
os.chdir(script_dir)
|
||
|
|
||
|
# Remove local tags
|
||
|
call("git tag -l | xargs git tag -d", shell=True)
|
||
|
call(["git", "fetch", "--tags"])
|
||
|
|
||
|
# Push new tag
|
||
|
call(["git", "tag", "v" + cur_version, "-m", "version " + cur_version])
|
||
|
call(["git", "push", "origin", "--tags"]) # Creates tar package on https://github.com/jopohl/urh/tarball/va.b.c.d
|
||
|
|
||
|
os.remove(os.path.join(tempfile.gettempdir(), "urh_releasing"))
|
||
|
|
||
|
# region Build docker image and push to DockerHub
|
||
|
os.chdir(os.path.dirname(__file__))
|
||
|
call(["docker", "login"])
|
||
|
call(["docker", "build", "--no-cache",
|
||
|
"--tag", "jopohl/urh:latest",
|
||
|
"--tag", "jopohl/urh:{}".format(cur_version), "."])
|
||
|
call(["docker", "push", "jopohl/urh:latest"])
|
||
|
call(["docker", "push", "jopohl/urh:{}".format(cur_version)])
|
||
|
# endregion
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
cleanup()
|
||
|
input("Starting release. Hit a key to continue.")
|
||
|
release()
|
||
|
cleanup()
|