78 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| #!/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)
 |