in release-announcement.py [0:0]
def _main():
descr = "Generate Gerrit release announcement email text"
parser = argparse.ArgumentParser(
description=descr, formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
parser.add_argument(
"-v",
"--version",
dest="version",
required=True,
help="gerrit version to release",
)
parser.add_argument(
"-p", "--previous", dest="previous", help="previous gerrit version (optional)"
)
parser.add_argument(
"-s",
"--summary",
dest="summary",
help="summary of the release content (optional)",
)
options = parser.parse_args()
summary = options.summary
if summary and not summary.endswith("."):
summary = summary + "."
data = {
"version": Version(options.version),
"previous": options.previous,
"summary": summary,
}
war = os.path.join(
os.path.expanduser("~/.m2/repository/com/google/gerrit/gerrit-war/"),
"%(version)s/gerrit-war-%(version)s.war" % data,
)
if not os.path.isfile(war):
print(
"Could not find war file for Gerrit %s in local Maven repository"
% data["version"],
file=sys.stderr,
)
sys.exit(1)
md5 = hashlib.md5()
sha1 = hashlib.sha1()
sha256 = hashlib.sha256()
BUF_SIZE = 65536 # Read data in 64kb chunks
with open(war, "rb") as f:
while True:
d = f.read(BUF_SIZE)
if not d:
break
md5.update(d)
sha1.update(d)
sha256.update(d)
data["sha1"] = sha1.hexdigest()
data["sha256"] = sha256.hexdigest()
data["md5"] = md5.hexdigest()
template_path = os.path.join(
os.path.dirname(os.path.realpath(__file__)), "release-announcement-template.txt"
)
template = Template(open(template_path).read())
output = template.render(data=data)
filename = "release-announcement-gerrit-%s.txt" % data["version"]
with open(filename, "w") as f:
f.write(output)
gpghome = os.path.abspath(os.path.expanduser("~/.gnupg"))
if not os.path.isdir(gpghome):
print("Skipping signing due to missing gnupg home folder")
else:
try:
gpg = GPG(homedir=gpghome)
except TypeError:
gpg = GPG(gnupghome=gpghome)
signed = gpg.sign(output)
filename = filename + ".asc"
with open(filename, "w") as f:
f.write(str(signed))