-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
