diff options
author | Dimitri Merejkowsky | 2015-09-15 18:37:54 +0200 |
---|---|---|
committer | Dimitri Merejkowsky | 2015-09-15 18:37:54 +0200 |
commit | 8527b39bf1103d0554463934c321ced706e1fa8c (patch) | |
tree | 0788fde46840500e1251af3877fc96ab7b74f7f6 | |
parent | 041698a8f21aed0854c9ed40d31d5114b8f7f4c0 (diff) | |
download | aur-8527b39bf1103d0554463934c321ced706e1fa8c.tar.gz |
Add a tool to automate qibuild release
-rw-r--r-- | make-release.py | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/make-release.py b/make-release.py new file mode 100644 index 000000000000..07d55007b9a6 --- /dev/null +++ b/make-release.py @@ -0,0 +1,107 @@ +import argparse +import os +import sys +import subprocess + +THIS_DIR = os.path.abspath(os.path.dirname(__file__)) + +def check_not_in_venv(): + if os.environ.get("VIRTUAL_ENV"): + sys.exit("You should not run this in a virtualenv!") + +def clean(): + cmd = ["git", "clean", "--force", "-d", "-x"] + subprocess.check_call(cmd, cwd=THIS_DIR) + + +def set_version(version): + pkgbuild = os.path.join(THIS_DIR, "PKGBUILD") + with open(pkgbuild, "r") as fp: + lines = fp.readlines() + new_lines = list() + for line in lines: + if line.startswith("pkgver"): + new_line = "pkgver='%s'\n" % version + new_lines.append(new_line) + else: + new_lines.append(line) + + with open(pkgbuild, "w") as fp: + fp.writelines(new_lines) + + +def get_checksum_line(): + cmd = ["makepkg", "--geninteg"] + output = subprocess.check_output(cmd, cwd=THIS_DIR) + return output.decode("utf-8") + +def set_checksum(checksum_line): + pkgbuild = os.path.join(THIS_DIR, "PKGBUILD") + with open(pkgbuild, "r") as fp: + lines = fp.readlines() + new_lines = list() + for line in lines: + if line.startswith("md5sums"): + new_lines.append(checksum_line) + else: + new_lines.append(line) + + with open(pkgbuild, "w") as fp: + fp.writelines(new_lines) + +def run_makepkg(): + cmd = ["makepkg"] + subprocess.check_call(cmd, cwd=THIS_DIR) + +def run_namcap(): + cmd = ["namcap", "PKGBUILD"] + subprocess.check_call(cmd, cwd=THIS_DIR) + contents = os.listdir(THIS_DIR) + pkgs = [x for x in contents if "pkg.tar.xz" in x] + if len(pkgs) != 1: + sys.exit("Expecting one pkg, got %s" % pkgs) + pkg = pkgs[0] + cmd = ["namcap", pkg] + subprocess.check_call(cmd, cwd=THIS_DIR) + +def update_srcinfo(): + cmd = ["mksrcinfo"] + subprocess.check_call(cmd, cwd=THIS_DIR) + +def commit_all(version): + cmd = ["git", "add", "PKGBUILD", ".SRCINFO"] + subprocess.check_call(cmd) + cmd = ["git", "commit", "--message", "Update to %s" % version] + subprocess.check_call(cmd) + +def push(): + cmd = ["git", "--no-pager", "show", "HEAD"] + subprocess.check_call(cmd) + answer = input("OK to push (y/n)? ") + if answer == "y": + cmd = ["git", "push"] + subprocess.check_call(cmd) + +def make_release(version): + clean() + set_version(version) + new_checksum_line = get_checksum_line() + set_checksum(new_checksum_line) + run_makepkg() + print("running namcap ...") + run_namcap() + print("namcap OK") + update_srcinfo() + commit_all(version) + push() + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("version") + args = parser.parse_args() + check_not_in_venv() + version = args.version + make_release(version) + +if __name__ == "__main__": + main() |