#!/usr/bin/env python3 # ===-- github-upload-release.py ------------------------------------------===# # # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # #===------------------------------------------------------------------------===# # # Create and manage releases in the llvm github project. # # This script requires python3 and the PyGithub module. # # Example Usage: # # You will need to obtain a personal access token for your github account in # order to use this script. Instructions for doing this can be found here: # https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line # # Create a new release from an existing tag: # ./github-upload-release.py --token $github_token --release 8.0.1-rc4 create # # Upload files for a release # ./github-upload-release.py --token $github_token --release 8.0.1-rc4 upload --files llvm-8.0.1rc4.src.tar.xz # # You can upload as many files as you want at a time and use wildcards e.g. # ./github-upload-release.py --token $github_token --release 8.0.1-rc4 upload --files *.src.* #===------------------------------------------------------------------------===# import argparse import github def create_release(repo, release, tag = None, name = None, message = None): if not tag: tag = 'llvmorg-{}'.format(release) if not name: name = 'LLVM {}'.format(release) if not message: message = 'LLVM {} Release'.format(release) prerelease = True if "rc" in release else False repo.create_git_release(tag = tag, name = name, message = message, prerelease = prerelease) def upload_files(repo, release, files): release = repo.get_release('llvmorg-{}'.format(release)) for f in files: print('Uploading {}'.format(f)) release.upload_asset(f) print("Done") parser = argparse.ArgumentParser() parser.add_argument('command', type=str, choices=['create', 'upload']) # All args parser.add_argument('--token', type=str) parser.add_argument('--release', type=str) # Upload args parser.add_argument('--files', nargs='+', type=str) args = parser.parse_args() github = github.Github(args.token) llvm_repo = github.get_organization('llvm').get_repo('llvm-project') if args.command == 'create': create_release(llvm_repo, args.release) if args.command == 'upload': upload_files(llvm_repo, args.release, args.files)