CPUS ?= $(shell cat /proc/cpuinfo | grep processor | wc -l || echo 1) MAKEFLAGS += --jobs=$(CPUS) IS_UBUNTU_1404=$(shell lsb_release -r | grep 14.04 > /dev/null && echo yes || echo no) ifeq ($IS_UBUNTU_1404,"yes") PY=python2.7 else PY=python3 endif PELICAN=pelican PELICANOPTS= BASEDIR=$(CURDIR) INPUTDIR=$(BASEDIR)/content OUTPUTDIR=$(BASEDIR)/output CONFFILE=$(BASEDIR)/pelicanconf.py PUBLISHCONF=$(BASEDIR)/publishconf.py # FTP_HOST=localhost # FTP_USER=anonymous # FTP_TARGET_DIR=/ SSH_HOST=173.249.40.201 SSH_PORT=21 SSH_USER=pschoen SSH_TARGET_DIR=/data/nginx/phschoen.de/ # S3_BUCKET=my_s3_bucket # DROPBOX_DIR=~/Dropbox/Public/ help: @echo 'Makefile for a pelican Web site ' @echo ' ' @echo 'Usage: ' @echo ' make html (re)generate the web site ' @echo ' make clean remove the generated files ' @echo ' make regenerate regenerate files upon modification ' @echo ' make publish generate using production settings ' @echo ' make serve serve site at http://localhost:8000' @echo ' make devserver start/restart develop_server.sh ' @echo ' make stopserver stop local server ' @echo ' ssh_upload upload the web site via SSH ' @echo ' rsync_upload upload the web site via rsync+ssh ' @echo ' dropbox_upload upload the web site via Dropbox ' @echo ' ftp_upload upload the web site via FTP ' @echo ' s3_upload upload the web site via S3 ' @echo ' github upload the web site via gh-pages ' @echo ' ' # generate thubnails thumb-img: IMAGE_ORG_DIR=$(INPUTDIR)/images_org IMAGE_DIR=$(INPUTDIR)/images IMG_SIZES=200 375 480 800 1600 IMG_FILES=$(shell find $(IMAGE_ORG_DIR)/ -type f -name '*.jpg') IMG_FILES+=$(shell find $(IMAGE_ORG_DIR)/ -type f -name '*.png') img: $(IMAGE_DIR) $(IMAGE_DIR): mkdir -p $@ define img-out-name $(dir $(patsubst $(IMAGE_ORG_DIR)%,$(IMAGE_DIR)%, $(1)))$(2)/$(notdir $(1)) endef img: copy-others copy-others: cp $(IMAGE_ORG_DIR)/* $(IMAGE_DIR)/ -r $(foreach size, $(IMG_SIZES), \ $(foreach img, $(IMG_FILES), \ $(eval img:$(call img-out-name, $(img),$(size))) \ )) define convert-rule $(1):$(2) mkdir -p $(dir $(1)) convert $(2) -resize $(3)x$(3)^ $(1) endef $(foreach size, $(IMG_SIZES), \ $(foreach img, $(IMG_FILES), \ $(eval $(call convert-rule, $(call img-out-name, $(img),$(size)),$(img),$(size)) ) \ ) \ ) $(IMAGE_DIR)%.png: $(IMAGE_ORG_DIR)%.png mkdir -p $(dir $@) cp $< $@ $(IMAGE_DIR)%.jpg: $(IMAGE_ORG_DIR)%.jpg mkdir -p $(dir $@) cp $< $@ img-clean: rm $(IMAGE_DIR) -rf html: clean $(OUTPUTDIR)/index.html $(OUTPUTDIR)/%.html: $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) clean: img-clean [ ! -d $(OUTPUTDIR) ] || find $(OUTPUTDIR) -mindepth 1 -delete regenerate: clean $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) serve: $(OUTPUTDIR) cd $(OUTPUTDIR) && $(PY) -m pelican.server devserver: killall $(PY) pelican || true $(BASEDIR)/develop_server.sh restart stopserver: kill -9 `cat pelican.pid` kill -9 `cat srv.pid` @echo 'Stopped Pelican and SimpleHTTPServer processes running in background.' publish: killall $(PY) pelican || true $(PELICAN) --debug $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS) ssh_upload: publish scp -vP $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) rsync_upload: publish rsync -e "ssh -p $(SSH_PORT)" -P -rvz --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude dropbox_upload: publish cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR) ftp_upload: publish lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit" s3_upload: publish s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed github: publish ghp-import $(OUTPUTDIR) git push origin gh-pages .PHONY: html help clean regenerate serve devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload github