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.
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 #===------------------------------------------------------------------------===#
34 def create_release(repo
, release
, tag
= None, name
= None, message
= None):
36 tag
= 'llvmorg-{}'.format(release
)
39 name
= 'LLVM {}'.format(release
)
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
))
52 print('Uploading {}'.format(f
))
53 release
.upload_asset(f
)
58 parser
= argparse
.ArgumentParser()
59 parser
.add_argument('command', type=str, choices
=['create', 'upload'])
62 parser
.add_argument('--token', type=str)
63 parser
.add_argument('--release', type=str)
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
)