master
Raw Download raw file
  1PY=python
  2PELICAN=pelican
  3PELICANOPTS=
  4
  5BASEDIR=$(CURDIR)
  6INPUTDIR=$(BASEDIR)/content
  7OUTPUTDIR=$(BASEDIR)/output
  8CONFFILE=$(BASEDIR)/pelicanconf.py
  9PUBLISHCONF=$(BASEDIR)/publishconf.py
 10
 11FTP_HOST=localhost
 12FTP_USER=anonymous
 13FTP_TARGET_DIR=/
 14
 15SSH_HOST=localhost
 16SSH_PORT=22
 17SSH_USER=vagrant
 18SSH_TARGET_DIR=/var/www
 19
 20S3_BUCKET=my_s3_bucket
 21
 22CLOUDFILES_USERNAME=my_rackspace_username
 23CLOUDFILES_API_KEY=my_rackspace_api_key
 24CLOUDFILES_CONTAINER=my_cloudfiles_container
 25
 26DROPBOX_DIR=~/Dropbox/Public/
 27
 28DEBUG ?= 0
 29ifeq ($(DEBUG), 1)
 30	PELICANOPTS += -D
 31endif
 32
 33help:
 34	@echo 'Makefile for a pelican Web site                                        '
 35	@echo '                                                                       '
 36	@echo 'Usage:                                                                 '
 37	@echo '   make html                        (re)generate the web site          '
 38	@echo '   make clean                       remove the generated files         '
 39	@echo '   make regenerate                  regenerate files upon modification '
 40	@echo '   make publish                     generate using production settings '
 41	@echo '   make serve [PORT=8000]           serve site at http://localhost:8000'
 42	@echo '   make devserver [PORT=8000]       start/restart develop_server.sh    '
 43	@echo '   make stopserver                  stop local server                  '
 44	@echo '   make ssh_upload                  upload the web site via SSH        '
 45	@echo '   make rsync_upload                upload the web site via rsync+ssh  '
 46	@echo '   make dropbox_upload              upload the web site via Dropbox    '
 47	@echo '   make ftp_upload                  upload the web site via FTP        '
 48	@echo '   make s3_upload                   upload the web site via S3         '
 49	@echo '   make cf_upload                   upload the web site via Cloud Files'
 50	@echo '   make github                      upload the web site via gh-pages   '
 51	@echo '                                                                       '
 52	@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html'
 53	@echo '                                                                       '
 54
 55html:
 56	$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
 57
 58clean:
 59	[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
 60
 61regenerate:
 62	$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
 63
 64serve:
 65ifdef PORT
 66	cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT)
 67else
 68	cd $(OUTPUTDIR) && $(PY) -m pelican.server
 69endif
 70
 71devserver:
 72ifdef PORT
 73	$(BASEDIR)/develop_server.sh restart $(PORT)
 74else
 75	$(BASEDIR)/develop_server.sh restart
 76endif
 77
 78stopserver:
 79	kill -9 `cat pelican.pid`
 80	kill -9 `cat srv.pid`
 81	@echo 'Stopped Pelican and SimpleHTTPServer processes running in background.'
 82
 83publish:
 84	$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
 85
 86ssh_upload: publish
 87	scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
 88
 89rsync_upload: publish
 90	rsync -e "ssh -p $(SSH_PORT)" -P -rvz --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude
 91
 92dropbox_upload: publish
 93	cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR)
 94
 95ftp_upload: publish
 96	lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
 97
 98s3_upload: publish
 99	s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed
100
101cf_upload: publish
102	cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) .
103
104github: publish
105	ghp-import $(OUTPUTDIR)
106	git push origin gh-pages
107
108.PHONY: html help clean regenerate serve devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github