diff --git a/electrum/contrib/sign_packages b/electrum/contrib/sign_packages index 6c748be6b..68b47ac22 100755 --- a/electrum/contrib/sign_packages +++ b/electrum/contrib/sign_packages @@ -1,33 +1,40 @@ #!/usr/bin/python +"""Produce the sha256_checksums-X.Y.Z.txt file for a release, and sign the file +with gpg. + +This must be run from the root of the electrum packages (`contrib/sign_packages`) +and it assumes that all the files for a single release are present in the dist/ +directory. +""" import getpass import os +import re import subprocess +import sys if __name__ == "__main__": os.chdir("dist") fnames = os.listdir(".") version_str = None for fname in fnames: - if fname.startswith("ElectrumABC-") and fname.endswith(".tar.gz"): - version_str = fname[12:17] + match = re.match(r"ElectrumABC-(\d+\.\d+\.\d+)\.tar\.gz", fname) + if match: + version_str = match.group(1) if version_str is None: - print("Warning: could not find release version number.") - else: - print("Detected version number: " + version_str) + print("Error: could not find release version number.") + sys.exit(1) + + print("Detected version number: " + version_str) proc = subprocess.Popen(["sha256sum", *fnames], stdout=subprocess.PIPE) stdout, _ = proc.communicate() - fname = ( - "sha256_checksums" - + (("-" + version_str) if version_str is not None else "") - + ".txt" - ) + fname = f"sha256_checksums-{version_str}.txt" with open(fname, "w") as f: f.write(stdout.decode("utf-8")) print(f"Checksum file: {fname}") - password = getpass.getpass("Password:") + password = getpass.getpass("GPG password:") os.system(f'gpg --sign --detach --passphrase "{password}" {fname}') os.chdir("..") print(f"Signature file: {fname}.sig")