diff --git a/Makefile b/Makefile index cf50cb7a..e43bb567 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,7 @@ # with Cygwin binaries at the start of the PATH. NAME=colorama +SHELL=/bin/bash help: ## Display help for documented make targets. @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \ @@ -18,6 +19,7 @@ pip=$(virtualenv)/bin/pip syspython=python3.8 python=$(virtualenv)/bin/python twine=$(virtualenv)/bin/twine +version=$(shell $(python) setup.py --version) clean: ## Remove build artifacts, .pyc files, virtualenv -rm -rf build dist MANIFEST colorama.egg-info $(virtualenv) @@ -48,11 +50,16 @@ test: ## Run tests # build packages -build: clean ## Build an sdist and wheel +build: ## Build an sdist and wheel + $(python) -m pip install --upgrade setuptools wheel $(python) setup.py sdist bdist_wheel .PHONY: sdist +test-release: build + ./test-release +.PHONY: test-release + upload: ## Upload our sdist and wheel - $(twine) upload dist/* + $(twine) upload dist/colorama-$(version)-* .PHONY: release diff --git a/test-release b/test-release new file mode 100644 index 00000000..b7b9708c --- /dev/null +++ b/test-release @@ -0,0 +1,42 @@ +#/usr/bin/env bash + +# Test the currently built release of Colorama from the dist/ dir. +# Run this before making a release. +# +# This should be run on Windows, because Colorama is mostly a no-op elsewhere. +# Hmmm, this script should probably be a .bat file then? Nah, WSL FTW. +# +# Uploads package from the dist/ directory to the *test* PyPI. +# Create a fresh virtualenvironment and install colorama from test PyPI. +# Import Colorama and make trivial use of it. + +# Exit on error +set -eu -o pipefail + +syspython=python3.8 +bin="$HOME/.virtualenvs/colorama/bin" +version=$($bin/python setup.py --version) +sandbox=test-release-playground + +# Upload to the test pypi. +$bin/twine upload --repository testpypi dist/colorama-$version-* \ + || echo " > Expect a 400 if package was already uploaded." + +# cd elsewhere so we cannot import from local source. +mkdir -p $sandbox +( + cd $sandbox + + # Create a new virtualenv + $syspython -m venv --clear venv + + # Install the package we just uploaded + venv/bin/python -m pip --quiet install --index-url https://test.pypi.org/simple colorama==$version + + # Test the package can be imported + venv/bin/python -c "import colorama; colorama.init(); print(colorama.Fore.GREEN + \"OK: Colorama\", colorama.__version__, \"from test pypi install.\")" +) + +# Tidy up +rm -rf $sandbox +