[Alignment][NFC] Migrate Instructions to Align
[llvm-core.git] / utils / release / github-upload-release.py
blobf0570a9e99ce6891ea887bb827374676d62dd3d1
1 #!/usr/bin/env python3
2 # ===-- github-upload-release.py ------------------------------------------===#
4 # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 # See https://llvm.org/LICENSE.txt for license information.
6 # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 #===------------------------------------------------------------------------===#
10 # Create and manage releases in the llvm github project.
12 # This script requires python3 and the PyGithub module.
14 # Example Usage:
16 # You will need to obtain a personal access token for your github account in
17 # order to use this script. Instructions for doing this can be found here:
18 # https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line
20 # Create a new release from an existing tag:
21 # ./github-upload-release.py --token $github_token --release 8.0.1-rc4 create
23 # Upload files for a release
24 # ./github-upload-release.py --token $github_token --release 8.0.1-rc4 upload --files llvm-8.0.1rc4.src.tar.xz
26 # You can upload as many files as you want at a time and use wildcards e.g.
27 # ./github-upload-release.py --token $github_token --release 8.0.1-rc4 upload --files *.src.*
28 #===------------------------------------------------------------------------===#
31 import argparse
32 import github
34 def create_release(repo, release, tag = None, name = None, message = None):
35 if not tag:
36 tag = 'llvmorg-{}'.format(release)
38 if not name:
39 name = 'LLVM {}'.format(release)
41 if not message:
42 message = 'LLVM {} Release'.format(release)
44 prerelease = True if "rc" in release else False
46 repo.create_git_release(tag = tag, name = name, message = message,
47 prerelease = prerelease)
49 def upload_files(repo, release, files):
50 release = repo.get_release('llvmorg-{}'.format(release))
51 for f in files:
52 print('Uploading {}'.format(f))
53 release.upload_asset(f)
54 print("Done")
58 parser = argparse.ArgumentParser()
59 parser.add_argument('command', type=str, choices=['create', 'upload'])
61 # All args
62 parser.add_argument('--token', type=str)
63 parser.add_argument('--release', type=str)
65 # Upload args
66 parser.add_argument('--files', nargs='+', type=str)
69 args = parser.parse_args()
71 github = github.Github(args.token)
72 llvm_repo = github.get_organization('llvm').get_repo('llvm-project')
74 if args.command == 'create':
75 create_release(llvm_repo, args.release)
76 if args.command == 'upload':
77 upload_files(llvm_repo, args.release, args.files)