Automatically manage Python virtual environment

This commit is contained in:
Vitaly Potyarkin 2020-08-21 10:24:41 +03:00
commit 2a40cd1540
2 changed files with 31 additions and 12 deletions

4
.gitignore vendored
View file

@ -5,3 +5,7 @@ __pycache__/
# Pelican output directory # Pelican output directory
output/ output/
# Virtual environment
/.venv
/Makefile.venv

View file

@ -1,5 +1,5 @@
PY?=python PY?=python
PELICAN?=pelican PELICAN?=$(VENV)/pelican
PELICANOPTS= PELICANOPTS=
BASEDIR=$(CURDIR) BASEDIR=$(CURDIR)
@ -67,42 +67,44 @@ submodule:
git submodule update git submodule update
html: html: | venv
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
clean: clean:
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR) [ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
regenerate: regenerate: | venv
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
serve: serve: | venv
ifdef PORT ifdef PORT
cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT) cd $(OUTPUTDIR) && $(VENV)/python -m pelican.server $(PORT)
else else
cd $(OUTPUTDIR) && $(PY) -m pelican.server cd $(OUTPUTDIR) && $(VENV)/python -m pelican.server
endif endif
serve-global: serve-global: | venv
ifdef SERVER ifdef SERVER
cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 $(SERVER) cd $(OUTPUTDIR) && $(VENV)/python -m pelican.server 80 $(SERVER)
else else
cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 0.0.0.0 cd $(OUTPUTDIR) && $(VENV)/python -m pelican.server 80 0.0.0.0
endif endif
devserver: devserver: export PY=$(VENV)/python
devserver: | venv
ifdef PORT ifdef PORT
$(BASEDIR)/develop_server.sh restart $(PORT) $(BASEDIR)/develop_server.sh restart $(PORT)
else else
$(BASEDIR)/develop_server.sh restart $(BASEDIR)/develop_server.sh restart
endif endif
stopserver: stopserver: export PY=$(VENV)/python
stopserver: | venv
$(BASEDIR)/develop_server.sh stop $(BASEDIR)/develop_server.sh stop
@echo 'Stopped Pelican and SimpleHTTPServer processes running in background.' @echo 'Stopped Pelican and SimpleHTTPServer processes running in background.'
publish: publish: | venv
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS) $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
ssh_upload: publish ssh_upload: publish
@ -128,3 +130,16 @@ github: publish
git push origin $(GITHUB_PAGES_BRANCH) git push origin $(GITHUB_PAGES_BRANCH)
.PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github .PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github
# Automatically manage Python virtual environment
include Makefile.venv
Makefile.venv:
curl \
-o Makefile.fetched \
-L "https://github.com/sio/Makefile.venv/raw/v2020.08.14/Makefile.venv"
echo "5afbcf51a82f629cd65ff23185acde90ebe4dec889ef80bbdc12562fbd0b2611 *Makefile.fetched" \
| sha256sum --check - \
&& mv Makefile.fetched Makefile.venv
VENVDIR:=$(abspath $(VENVDIR))
export PELICAN