48 lines
905 B
Makefile
48 lines
905 B
Makefile
-include include.mk
|
|
# pelican variables
|
|
P_OUTPUT?=output
|
|
P_OPT?=
|
|
|
|
# deploy variables
|
|
D_BIN?=rsync
|
|
D_OPT?=-avz --delete
|
|
D_DST?="blog:$(D_FOLDER)"
|
|
|
|
# venv variables
|
|
|
|
VENV_SOURCE?=.venv
|
|
REQUIREMENT?=requirements.txt
|
|
PYTHON_BIN?=python3
|
|
VENV_CMD?=. $(VENV_SOURCE)/bin/activate
|
|
|
|
# Pelican part
|
|
|
|
.PHONY: build
|
|
build: $(VENV_SOURCE)/dep
|
|
$(VENV_CMD) && pelican -o $(P_OUTPUT) $(P_OPT)
|
|
|
|
.PHONY: deploy
|
|
deploy: build
|
|
[ -d $(P_OUTPUT) ] && $(D_BIN) $(D_OPT) $(P_OUTPUT)/ $(D_DST)
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
[ -d $(P_OUTPUT) ] && rm -rf $(P_OUTPUT)
|
|
|
|
# venv management
|
|
$(VENV_SOURCE):
|
|
$(PYTHON_BIN) -m venv $(VENV_SOURCE)
|
|
|
|
$(REQUIREMENT):
|
|
|
|
$(VENV_SOURCE)/dep: $(VENV_SOURCE) $(REQUIREMENT)
|
|
touch $(VENV_SOURCE)/dep
|
|
$(VENV_CMD) && pip install -r $(REQUIREMENT)
|
|
|
|
.PHONY: clean-venv
|
|
clean-venv:
|
|
[ -d $(VENV_SOURCE) ] && rm -rf $(VENV_SOURCE)
|
|
|
|
.PHONY: serve
|
|
serve: $(VENV_SOURCE)/dep
|
|
$(VENV_CMD) && invoke livereload
|