diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-01-28 10:17:39 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-01-28 10:17:39 +0100 |
commit | 6adf86ec496babac580b88c8baacf6b2710d8ca1 (patch) | |
tree | 888b12721a82802032622bfaf67fad115f63c946 /scripts | |
parent | 5ac9e3c23d93936df091bca6057b2f6adc3aeb2a (diff) | |
download | qutebrowser-6adf86ec496babac580b88c8baacf6b2710d8ca1.tar.gz qutebrowser-6adf86ec496babac580b88c8baacf6b2710d8ca1.zip |
scripts: Add change_release.py
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/dev/change_release.py | 68 |
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() |