summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-01-28 10:17:39 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-01-28 10:17:39 +0100
commit6adf86ec496babac580b88c8baacf6b2710d8ca1 (patch)
tree888b12721a82802032622bfaf67fad115f63c946 /scripts
parent5ac9e3c23d93936df091bca6057b2f6adc3aeb2a (diff)
downloadqutebrowser-6adf86ec496babac580b88c8baacf6b2710d8ca1.tar.gz
qutebrowser-6adf86ec496babac580b88c8baacf6b2710d8ca1.zip
scripts: Add change_release.py
Diffstat (limited to 'scripts')
-rw-r--r--scripts/dev/change_release.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/scripts/dev/change_release.py b/scripts/dev/change_release.py
new file mode 100644
index 000000000..34282db5d
--- /dev/null
+++ b/scripts/dev/change_release.py
@@ -0,0 +1,68 @@
+import sys
+import argparse
+import os.path
+
+import github3
+import github3.exceptions
+
+
+class Error(Exception):
+
+ """Raised for errors in this script."""
+
+
+def read_github_token():
+ """Read the GitHub API token from disk."""
+ token_file = os.path.join(os.path.expanduser('~'), '.gh_token')
+ with open(token_file, encoding='ascii') as f:
+ token = f.read().strip()
+ return token
+
+
+def find_release(repo, tag):
+ """Find the release for the given repo/tag."""
+ release = None # to satisfy pylint
+ for release in repo.releases():
+ if release.tag_name == tag:
+ break
+ else:
+ raise Error("No release found for {!r}!".format(tag))
+ return release
+
+
+def change_release_description(release, filename, description):
+ """Change a release description to the given new one."""
+ assets = [asset for asset in release.assets() if asset.name == filename]
+ if not assets:
+ raise Error("No assets found for {filename}")
+ elif len(assets) > 1:
+ raise Error("Multiple assets found for {filename}: {assets}")
+
+ asset = assets[0]
+ asset.edit(filename, description)
+
+
+def parse_args():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('tag')
+ parser.add_argument('filename')
+ parser.add_argument('description')
+ return parser.parse_args()
+
+
+def main():
+ args = parse_args()
+
+ token = read_github_token()
+ gh = github3.login(token=token)
+ repo = gh.repository('qutebrowser', 'qutebrowser')
+
+ try:
+ release = find_release(repo, args.tag)
+ change_release_description(release, args.filename, args.description)
+ except Error as e:
+ sys.exit(str(e))
+
+
+if __name__ == '__main__':
+ main()