More changes for WKD.
[fsij-homepage.git] / Makefile
1 PY=python
2 PELICAN=pelican
3 PELICANOPTS=
4
5 BASEDIR=$(CURDIR)
6 INPUTDIR=$(BASEDIR)/content
7 OUTPUTDIR=$(BASEDIR)/../fsij-homepage-html
8 CONFFILE=$(BASEDIR)/pelicanconf.py
9 PUBLISHCONF=$(BASEDIR)/publishconf.py
10
11 FTP_HOST=localhost
12 FTP_USER=anonymous
13 FTP_TARGET_DIR=/
14
15 SSH_HOST=localhost
16 SSH_PORT=22
17 SSH_USER=root
18 SSH_TARGET_DIR=/var/www
19
20 S3_BUCKET=my_s3_bucket
21
22 CLOUDFILES_USERNAME=my_rackspace_username
23 CLOUDFILES_API_KEY=my_rackspace_api_key
24 CLOUDFILES_CONTAINER=my_cloudfiles_container
25
26 DROPBOX_DIR=~/Dropbox/Public/
27
28 DEBUG ?= 0
29 ifeq ($(DEBUG), 1)
30         PELICANOPTS += -D
31 endif
32
33 help:
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
55 html:
56         $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
57         rm -rf $(OUTPUTDIR)/wkd && cp -a wkd $(OUTPUTDIR)/
58
59 clean:
60         [ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
61
62 regenerate:
63         $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
64
65 serve:
66 ifdef PORT
67         cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT)
68 else
69         cd $(OUTPUTDIR) && $(PY) -m pelican.server
70 endif
71
72 devserver:
73 ifdef PORT
74         $(BASEDIR)/develop_server.sh restart $(PORT)
75 else
76         $(BASEDIR)/develop_server.sh restart
77 endif
78
79 stopserver:
80         kill -9 `cat pelican.pid`
81         kill -9 `cat srv.pid`
82         @echo 'Stopped Pelican and SimpleHTTPServer processes running in background.'
83
84 publish:
85         $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
86
87 ssh_upload: publish
88         scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
89
90 rsync_upload: publish
91         rsync -e "ssh -p $(SSH_PORT)" -P -rvz --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude
92
93 dropbox_upload: publish
94         cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR)
95
96 ftp_upload: publish
97         lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
98
99 s3_upload: publish
100         s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed
101
102 cf_upload: publish
103         cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) .
104
105 github: publish
106         ghp-import $(OUTPUTDIR)
107         git push origin gh-pages
108
109 .PHONY: html help clean regenerate serve devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github