On Thu, Dec 16, 2021 at 5:48 AM Daniel P. Berrangé <berra...@redhat.com> wrote:
> On Wed, Dec 15, 2021 at 04:06:27PM -0500, John Snow wrote: > > Signed-off-by: John Snow <js...@redhat.com> > > --- > > Makefile | 32 ++++++++++++++++++++++++++++++++ > > 1 file changed, 32 insertions(+) > > > > diff --git a/Makefile b/Makefile > > index 97d737a..81bfca8 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -110,3 +110,35 @@ distclean: clean > > rm -f .coverage .coverage.* > > rm -rf htmlcov/ > > rm -rf test-results/ > > + > > +.PHONY: pristine > > +pristine: > > + @git diff-files --quiet --ignore-submodules -- || \ > > + (echo "You have unstaged changes."; exit 1) > > + @git diff-index --cached --quiet HEAD --ignore-submodules -- || \ > > + (echo "Your index contains uncommitted changes."; exit 1) > > + @[ -z "$(shell git ls-files -o)" ] || \ > > + (echo "You have untracked files: $(shell git ls-files > -o)"; exit 1) > > + > > +dist: setup.cfg setup.py Makefile README.rst > > + python3 -m build > > + @touch dist > > + > > +.PHONY: pre-publish > > +pre-publish: pristine dist > > + @git describe --exact-match 2>/dev/null || \ > > + (echo -e "\033[0;31mThere is no annotated tag for this > commit.\033[0m"; exit 1) > > + python3 -m twine check --strict dist/* > > + git push -v --atomic --follow-tags --dry-run > > + > > +.PHONY: publish > > +publish: pre-publish > > + # Set the username via TWINE_USERNAME. > > + # Set the password via TWINE_PASSWORD. > > + # Set the pkg repository via TWINE_REPOSITORY. > > + python3 -m twine upload --verbose dist/* > > + git push -v --atomic --follow-tags > > + > > +.PHONY: publish-test > > +publish-test: pre-publish > > + python3 -m twine upload --verbose -r testpypi dist/* > > It doesn't feel very pythonic to have a makefile in the project. > > If we want some helpers for publishing releases, I would have > expected to see a python script eg scripts/publish.py > > Eh, Python folks use Makefiles too. I've been using these little Makefile targets for hobby things for a while and I had them laying around and ready to go. I have no strong need to "upgrade" to python scripts for these right now, unless there's some extra features you want to see. --js