From db66b6eaf5a4d1b81ee292474a87504afdf30beb Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Sun, 3 Nov 2019 01:22:53 +0530 Subject: [PATCH] Add a nox command to build release artifacts --- noxfile.py | 27 +++++++++++++++++++++++++++ tools/automation/release/__init__.py | 7 +++++++ 2 files changed, 34 insertions(+) diff --git a/noxfile.py b/noxfile.py index 21ee63a3d..e03dbbd1d 100644 --- a/noxfile.py +++ b/noxfile.py @@ -4,6 +4,7 @@ # The following comment should be removed at some point in the future. # mypy: disallow-untyped-defs=False +import glob import os import shutil import sys @@ -182,3 +183,29 @@ def prepare_release(session): next_dev_version = release.get_next_development_version(version) release.update_version_file(next_dev_version, VERSION_FILE) release.commit_file(session, VERSION_FILE, message="Bump for development") + + +@nox.session(name="build-release") +def build_release(session): + version = release.get_version_from_arguments(session.posargs) + if not version: + session.error("Usage: nox -s upload-release -- YY.N[.P]") + + session.log("# Ensure no files in dist/") + if release.have_files_in_folder("dist"): + session.error("There are files in dist/. Remove them and try again") + + session.log("# Install dependencies") + session.install("setuptools", "wheel", "twine") + + session.log("# Checkout the tag") + session.run("git", "checkout", version, external=True, silent=True) + + session.log("# Build distributions") + session.run("python", "setup.py", "sdist", "bdist_wheel", silent=True) + + session.log("# Verify distributions") + session.run("twine", "check", *glob.glob("dist/*"), silent=True) + + session.log("# Checkout the master branch") + session.run("git", "checkout", "master", external=True, silent=True) diff --git a/tools/automation/release/__init__.py b/tools/automation/release/__init__.py index e97d18008..7717ccb51 100644 --- a/tools/automation/release/__init__.py +++ b/tools/automation/release/__init__.py @@ -4,6 +4,7 @@ These are written according to the order they are called in. """ import io +import os import subprocess @@ -102,3 +103,9 @@ def get_next_development_version(version): minor += 1 return f"{major}.{minor}.dev0" + + +def have_files_in_folder(folder_name): + if not os.path.exists(folder_name): + return False + return bool(os.listdir(folder_name))