Add github-release.py script
Summary: This script can be used for uploading relases sources and binaries to github. Reviewers: hans Reviewed By: hans Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64841 llvm-svn: 366977
This commit is contained in:
parent
a2d74d3d90
commit
925ccdbfd7
|
@ -0,0 +1,77 @@
|
|||
#!/usr/bin/env python3
|
||||
# ===-- github-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-release.py --token $github_token --release 8.0.1-rc4 create
|
||||
#
|
||||
# Upload files for a release
|
||||
# ./github-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-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)
|
Loading…
Reference in New Issue