2017-01-15 08:47:21 +01:00
PY?={{py_v}}
PELICAN?={{pelican}}
PELICANOPTS={{pelicanopts}}
BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
{% if ftp %}
FTP_HOST={{ftp_host}}
FTP_USER={{ftp_user}}
FTP_TARGET_DIR={{ftp_target_dir}}
{% endif %}
{% if ssh %}
SSH_HOST={{ssh_host}}
SSH_PORT={{ssh_port}}
SSH_USER={{ssh_user}}
SSH_TARGET_DIR={{ssh_target_dir}}
{% endif %}
{% if s3 %}
S3_BUCKET={{s3_bucket}}
{% endif %}
{% if cloudfiles %}
CLOUDFILES_USERNAME={{cloudfiles_username}}
CLOUDFILES_API_KEY={{cloudfiles_api_key}}
CLOUDFILES_CONTAINER={{cloudfiles_container}}
{% endif %}
{% if dropbox %}
DROPBOX_DIR={{dropbox_dir}}
{% endif %}
{% if github %}
GITHUB_PAGES_BRANCH={{github_pages_branch}}
{% endif %}
2013-12-06 17:39:51 -08:00
2013-06-26 13:25:20 +02:00
DEBUG ?= 0
ifeq ($(DEBUG), 1)
PELICANOPTS += -D
2013-08-29 17:35:48 -07:00
endif
2013-06-26 13:25:20 +02:00
2015-01-17 16:37:11 +01:00
RELATIVE ?= 0
ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif
2012-05-06 12:07:13 +02:00
help:
2015-01-10 15:40:54 -08:00
@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 [PORT=8000] serve site at http://localhost:8000'
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
2017-07-10 16:59:35 +02:00
@echo ' make devserver [PORT=8000] serve and regenerate together '
2015-01-10 15:40:54 -08:00
@echo ' make ssh_upload upload the web site via SSH '
@echo ' make rsync_upload upload the web site via rsync+ssh '
2017-01-15 08:47:21 +01:00
{% if dropbox %}
2015-01-10 15:40:54 -08:00
@echo ' make dropbox_upload upload the web site via Dropbox '
2017-01-15 08:47:21 +01:00
{% endif %}
{% if ftp %}
2015-01-10 15:40:54 -08:00
@echo ' make ftp_upload upload the web site via FTP '
2017-01-15 08:47:21 +01:00
{% endif %}
{% if s3 %}
2015-01-10 15:40:54 -08:00
@echo ' make s3_upload upload the web site via S3 '
2017-01-15 08:47:21 +01:00
{% endif %}
{% if cloudfiles %}
2015-01-10 15:40:54 -08:00
@echo ' make cf_upload upload the web site via Cloud Files'
2017-01-15 08:47:21 +01:00
{% endif %}
{% if github %}
2015-01-10 15:40:54 -08:00
@echo ' make github upload the web site via gh-pages '
2017-01-15 08:47:21 +01:00
{% endif %}
2015-01-10 15:40:54 -08:00
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
2015-01-17 16:37:11 +01:00
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
2015-01-10 15:40:54 -08:00
@echo ' '
2012-05-06 12:07:13 +02:00
Remove "clean" task from "make html"; fixes #637
This change removes the "clean" task from the "html" and "regenerate"
tasks in the default Makefile generated by pelican-quickstart. The
previous behavior ignored whether the DELETE_OUTPUT_DIRECTORY
setting was set to True or not and deleted everything in the output
directory every time the "make html" or "make regenerate" task was run.
In addition to violating the Principle of Least Astonishment, there was
also the potential for data loss if the user wasn't careful when
defining the output directory location in the Makefile.
The new behavior therefore relies primarily on the
DELETE_OUTPUT_DIRECTORY setting to control if and when the output
directory is cleaned. The default settings and Makefile generated by the
pelican-quickstart command, for example, no longer clean the output
directory when the "make html" task is run. If the user wants to change
this behavior and have the output directory cleaned on every "make html"
run, the recommended method would be to set DELETE_OUTPUT_DIRECTORY to
True in pelicanconf.py. Alternatively, the user can manually run "make
clean", with the caveat that the output directory and its contents will
be entirely destroyed, including any otherwise to-be-retained files or
folders specified in the OUTPUT_RETENTION setting. It is for that reason
that relying on the DELETE_OUTPUT_DIRECTORY setting is instead
recommended.
As before, DELETE_OUTPUT_DIRECTORY is set to True in the publishconf.py
settings file generated by the pelican-quickstart script. This way, any
potentially old and irrelevant files will be automatically removed
before the latest version of the site is transferred to the production
server environment.
In summary, this change allows for the sanest possible default settings,
while still allowing end users to customize output cleaning to their
preferred behavior with a minimum of confusion.
2013-06-24 13:05:00 -07:00
html:
2017-01-15 08:47:21 +01:00
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
2012-05-06 12:07:13 +02:00
clean:
2017-01-15 08:47:21 +01:00
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
2012-05-06 12:07:13 +02:00
Remove "clean" task from "make html"; fixes #637
This change removes the "clean" task from the "html" and "regenerate"
tasks in the default Makefile generated by pelican-quickstart. The
previous behavior ignored whether the DELETE_OUTPUT_DIRECTORY
setting was set to True or not and deleted everything in the output
directory every time the "make html" or "make regenerate" task was run.
In addition to violating the Principle of Least Astonishment, there was
also the potential for data loss if the user wasn't careful when
defining the output directory location in the Makefile.
The new behavior therefore relies primarily on the
DELETE_OUTPUT_DIRECTORY setting to control if and when the output
directory is cleaned. The default settings and Makefile generated by the
pelican-quickstart command, for example, no longer clean the output
directory when the "make html" task is run. If the user wants to change
this behavior and have the output directory cleaned on every "make html"
run, the recommended method would be to set DELETE_OUTPUT_DIRECTORY to
True in pelicanconf.py. Alternatively, the user can manually run "make
clean", with the caveat that the output directory and its contents will
be entirely destroyed, including any otherwise to-be-retained files or
folders specified in the OUTPUT_RETENTION setting. It is for that reason
that relying on the DELETE_OUTPUT_DIRECTORY setting is instead
recommended.
As before, DELETE_OUTPUT_DIRECTORY is set to True in the publishconf.py
settings file generated by the pelican-quickstart script. This way, any
potentially old and irrelevant files will be automatically removed
before the latest version of the site is transferred to the production
server environment.
In summary, this change allows for the sanest possible default settings,
while still allowing end users to customize output cleaning to their
preferred behavior with a minimum of confusion.
2013-06-24 13:05:00 -07:00
regenerate:
2017-01-15 08:47:21 +01:00
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
2012-07-07 07:41:12 -07:00
serve:
2013-07-07 14:28:15 +02:00
ifdef PORT
2018-07-07 19:48:52 +02:00
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
2013-07-07 14:28:15 +02:00
else
2018-07-07 19:48:52 +02:00
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
2013-07-07 14:28:15 +02:00
endif
2012-08-05 17:25:39 -07:00
2015-01-10 15:40:54 -08:00
serve-global:
ifdef SERVER
2018-07-07 19:48:52 +02:00
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b $(SERVER)
2015-01-10 15:40:54 -08:00
else
2018-07-07 19:48:52 +02:00
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b 0.0.0.0
2015-01-10 15:40:54 -08:00
endif
2012-08-05 17:25:39 -07:00
devserver:
2013-07-07 14:28:15 +02:00
ifdef PORT
2018-07-07 19:48:52 +02:00
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
2013-07-07 14:28:15 +02:00
else
2018-07-07 19:48:52 +02:00
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
2013-07-07 14:28:15 +02:00
endif
2012-07-07 07:41:12 -07:00
publish:
2017-01-15 08:47:21 +01:00
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
2012-07-07 07:41:12 -07:00
2017-01-15 08:47:21 +01:00
{% set upload = [] %}
{% if ssh %}
{% set upload = upload + ["ssh_upload"] %}
2012-07-07 07:41:12 -07:00
ssh_upload: publish
2017-01-15 08:47:21 +01:00
scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
2012-05-06 12:07:13 +02:00
2018-11-28 10:31:21 -06:00
{% set upload = upload + ["rsync_upload"] %}
2012-07-07 07:41:12 -07:00
rsync_upload: publish
2017-06-08 22:54:12 +01:00
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --cvs-exclude --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
2012-05-06 12:07:13 +02:00
2017-01-15 08:47:21 +01:00
{% endif %}
{% if dropbox %}
{% set upload = upload + ["dropbox_upload"] %}
2012-08-05 17:25:39 -07:00
dropbox_upload: publish
2017-01-15 08:47:21 +01:00
cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR)
2012-08-05 17:25:39 -07:00
2017-01-15 08:47:21 +01:00
{% endif %}
{% if ftp %}
{% set upload = upload + ["ftp_upload"] %}
2012-07-07 07:41:12 -07:00
ftp_upload: publish
2017-01-15 08:47:21 +01:00
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
2012-05-06 12:07:13 +02:00
2017-01-15 08:47:21 +01:00
{% endif %}
{% if s3 %}
{% set upload = upload + ["s3_upload"] %}
2013-03-15 15:04:33 +11:00
s3_upload: publish
2017-03-13 17:59:43 -05:00
aws s3 sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl public-read --delete
2013-03-15 15:04:33 +11:00
2017-01-15 08:47:21 +01:00
{% endif %}
{% if cloudfiles %}
{% set upload = upload + ["cf_upload"] %}
2013-06-11 21:43:23 -05:00
cf_upload: publish
cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) .
2017-01-15 08:47:21 +01:00
{% endif %}
{% if github %}
{% set upload = upload + ["github"] %}
2012-07-07 07:41:12 -07:00
github: publish
2017-01-15 08:47:21 +01:00
ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
2013-12-06 17:39:51 -08:00
git push origin $(GITHUB_PAGES_BRANCH)
2012-05-06 12:07:13 +02:00
2017-01-15 08:47:21 +01:00
{% endif %}
2018-12-12 13:25:14 -08:00
.PHONY: html help clean regenerate serve serve-global devserver publish {{ upload|join(" ") }}