diff options
Diffstat (limited to 'release.py')
-rw-r--r-- | release.py | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/release.py b/release.py deleted file mode 100644 index 3608d7f..0000000 --- a/release.py +++ /dev/null @@ -1,81 +0,0 @@ -""" -Release script -""" - -import glob -import os -import shutil -import subprocess -import sys - -import click - -@click.group() -def cli(): - pass - -@cli.command() -def build(): - DIST_PATH = 'dist' - if os.path.exists(DIST_PATH) and os.listdir(DIST_PATH): - if click.confirm('{} is not empty - delete contents?'.format(DIST_PATH)): - shutil.rmtree(DIST_PATH) - os.makedirs(DIST_PATH) - else: - click.echo('Aborting') - sys.exit(1) - - subprocess.check_call(['python', '-m', 'build', - '--wheel', '--sdist', - '--outdir', DIST_PATH, - '.']) - -@cli.command() -def sign(): - # Sign all the distribution files - for fpath in glob.glob('dist/*'): - subprocess.check_call(['gpg', '--armor', '--output', fpath + '.asc', - '--detach-sig', fpath]) - - # Verify the distribution files - for fpath in glob.glob('dist/*'): - if fpath.endswith('.asc'): - continue - - subprocess.check_call(['gpg', '--verify', fpath + '.asc', fpath]) - - -@cli.command() -@click.option('--passfile', default=None, - help='File path to read and decrypt with gpg.') -@click.option('--release/--no-release', default=False) -def upload(passfile, release): - if release: - repository='pypi' - else: - repository='pypitest' - - env = os.environ.copy() - if passfile is not None: - gpg_call = subprocess.run(['gpg', '-d', passfile], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - - username, password = gpg_call.stdout.decode('utf-8').split('\n') - env['TWINE_USERNAME'] = username - env['TWINE_PASSWORD'] = password - - dist_files = glob.glob('dist/*') - for dist_file in dist_files: - if dist_file.endswith('.asc'): - continue - if dist_file + '.asc' not in dist_files: - raise ValueError('Missing signature file for: {}'.format(dist_file)) - - args = ['twine', 'upload', '-r', repository] + dist_files - - p = subprocess.Popen(args, env=env) - p.wait() - -if __name__ == "__main__": - cli() |