forked from github/pelican
pelican-quickstart: switch to jinja2
- Use the jinja2 templating language for Makefile, fabfile, pelicanconf, publishconf, and develop-server.sh - Add logic in pelican_quickstart.py - Let jinja2 handle opening and reading template files - Remove thus unused functions for string.Template
This commit is contained in:
parent
34103cd5dd
commit
6d46bf4257
11 changed files with 465 additions and 420 deletions
|
|
@ -1,30 +1,44 @@
|
|||
PELICAN?=$pelican
|
||||
PELICANOPTS=$pelicanopts
|
||||
PY?={{py_v}}
|
||||
PELICAN?={{pelican}}
|
||||
PELICANOPTS={{pelicanopts}}
|
||||
|
||||
BASEDIR=$$(CURDIR)
|
||||
INPUTDIR=$$(BASEDIR)/content
|
||||
OUTPUTDIR=$$(BASEDIR)/output
|
||||
CONFFILE=$$(BASEDIR)/pelicanconf.py
|
||||
PUBLISHCONF=$$(BASEDIR)/publishconf.py
|
||||
BASEDIR=$(CURDIR)
|
||||
INPUTDIR=$(BASEDIR)/content
|
||||
OUTPUTDIR=$(BASEDIR)/output
|
||||
CONFFILE=$(BASEDIR)/pelicanconf.py
|
||||
PUBLISHCONF=$(BASEDIR)/publishconf.py
|
||||
|
||||
FTP_HOST=$ftp_host
|
||||
FTP_USER=$ftp_user
|
||||
FTP_TARGET_DIR=$ftp_target_dir
|
||||
{% if ftp %}
|
||||
FTP_HOST={{ftp_host}}
|
||||
FTP_USER={{ftp_user}}
|
||||
FTP_TARGET_DIR={{ftp_target_dir}}
|
||||
|
||||
SSH_HOST=$ssh_host
|
||||
SSH_PORT=$ssh_port
|
||||
SSH_USER=$ssh_user
|
||||
SSH_TARGET_DIR=$ssh_target_dir
|
||||
{% endif %}
|
||||
{% if ssh %}
|
||||
SSH_HOST={{ssh_host}}
|
||||
SSH_PORT={{ssh_port}}
|
||||
SSH_USER={{ssh_user}}
|
||||
SSH_TARGET_DIR={{ssh_target_dir}}
|
||||
|
||||
S3_BUCKET=$s3_bucket
|
||||
{% endif %}
|
||||
{% if s3 %}
|
||||
S3_BUCKET={{s3_bucket}}
|
||||
|
||||
CLOUDFILES_USERNAME=$cloudfiles_username
|
||||
CLOUDFILES_API_KEY=$cloudfiles_api_key
|
||||
CLOUDFILES_CONTAINER=$cloudfiles_container
|
||||
{% endif %}
|
||||
{% if cloudfiles %}
|
||||
CLOUDFILES_USERNAME={{cloudfiles_username}}
|
||||
CLOUDFILES_API_KEY={{cloudfiles_api_key}}
|
||||
CLOUDFILES_CONTAINER={{cloudfiles_container}}
|
||||
|
||||
DROPBOX_DIR=$dropbox_dir
|
||||
{% endif %}
|
||||
{% if dropbox %}
|
||||
DROPBOX_DIR={{dropbox_dir}}
|
||||
|
||||
GITHUB_PAGES_BRANCH=$github_pages_branch
|
||||
{% endif %}
|
||||
{% if github %}
|
||||
GITHUB_PAGES_BRANCH={{github_pages_branch}}
|
||||
|
||||
{% endif %}
|
||||
|
||||
DEBUG ?= 0
|
||||
ifeq ($(DEBUG), 1)
|
||||
|
|
@ -48,47 +62,59 @@ help:
|
|||
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
|
||||
@echo ' make devserver [PORT=8000] start/restart develop_server.sh '
|
||||
@echo ' make stopserver stop local server '
|
||||
{% if ssh %}
|
||||
@echo ' make ssh_upload upload the web site via SSH '
|
||||
@echo ' make rsync_upload upload the web site via rsync+ssh '
|
||||
{% endif %}
|
||||
{% if dropbox %}
|
||||
@echo ' make dropbox_upload upload the web site via Dropbox '
|
||||
{% endif %}
|
||||
{% if ftp %}
|
||||
@echo ' make ftp_upload upload the web site via FTP '
|
||||
{% endif %}
|
||||
{% if s3 %}
|
||||
@echo ' make s3_upload upload the web site via S3 '
|
||||
{% endif %}
|
||||
{% if cloudfiles %}
|
||||
@echo ' make cf_upload upload the web site via Cloud Files'
|
||||
{% endif %}
|
||||
{% if github %}
|
||||
@echo ' make github upload the web site via gh-pages '
|
||||
{% endif %}
|
||||
@echo ' '
|
||||
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
|
||||
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
|
||||
@echo ' '
|
||||
|
||||
html:
|
||||
$$(PELICAN) $$(INPUTDIR) -o $$(OUTPUTDIR) -s $$(CONFFILE) $$(PELICANOPTS)
|
||||
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
|
||||
|
||||
clean:
|
||||
[ ! -d $$(OUTPUTDIR) ] || rm -rf $$(OUTPUTDIR)
|
||||
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
|
||||
|
||||
regenerate:
|
||||
$$(PELICAN) -r $$(INPUTDIR) -o $$(OUTPUTDIR) -s $$(CONFFILE) $$(PELICANOPTS)
|
||||
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
|
||||
|
||||
serve:
|
||||
ifdef PORT
|
||||
cd $$(OUTPUTDIR) && $(PY) -m pelican.server $$(PORT)
|
||||
cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT)
|
||||
else
|
||||
cd $$(OUTPUTDIR) && $(PY) -m pelican.server
|
||||
cd $(OUTPUTDIR) && $(PY) -m pelican.server
|
||||
endif
|
||||
|
||||
serve-global:
|
||||
ifdef SERVER
|
||||
cd $$(OUTPUTDIR) && $(PY) -m pelican.server 80 $$(SERVER)
|
||||
cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 $(SERVER)
|
||||
else
|
||||
cd $$(OUTPUTDIR) && $(PY) -m pelican.server 80 0.0.0.0
|
||||
cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 0.0.0.0
|
||||
endif
|
||||
|
||||
|
||||
devserver:
|
||||
ifdef PORT
|
||||
$$(BASEDIR)/develop_server.sh restart $$(PORT)
|
||||
$(BASEDIR)/develop_server.sh restart $(PORT)
|
||||
else
|
||||
$$(BASEDIR)/develop_server.sh restart
|
||||
$(BASEDIR)/develop_server.sh restart
|
||||
endif
|
||||
|
||||
stopserver:
|
||||
|
|
@ -96,28 +122,49 @@ stopserver:
|
|||
@echo 'Stopped Pelican and SimpleHTTPServer processes running in background.'
|
||||
|
||||
publish:
|
||||
$$(PELICAN) $$(INPUTDIR) -o $$(OUTPUTDIR) -s $$(PUBLISHCONF) $$(PELICANOPTS)
|
||||
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
|
||||
|
||||
{% set upload = [] %}
|
||||
{% if ssh %}
|
||||
{% set upload = upload + ["ssh_upload"] %}
|
||||
ssh_upload: publish
|
||||
scp -P $$(SSH_PORT) -r $$(OUTPUTDIR)/* $$(SSH_USER)@$$(SSH_HOST):$$(SSH_TARGET_DIR)
|
||||
scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
|
||||
|
||||
{%- set upload = upload + ["rsync_upload"] -%}
|
||||
rsync_upload: publish
|
||||
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --cvs-exclude --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
|
||||
|
||||
{% endif %}
|
||||
{% if dropbox %}
|
||||
{% set upload = upload + ["dropbox_upload"] %}
|
||||
dropbox_upload: publish
|
||||
cp -r $$(OUTPUTDIR)/* $$(DROPBOX_DIR)
|
||||
cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR)
|
||||
|
||||
{% endif %}
|
||||
{% if ftp %}
|
||||
{% set upload = upload + ["ftp_upload"] %}
|
||||
ftp_upload: publish
|
||||
lftp ftp://$$(FTP_USER)@$$(FTP_HOST) -e "mirror -R $$(OUTPUTDIR) $$(FTP_TARGET_DIR) ; quit"
|
||||
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
|
||||
|
||||
{% endif %}
|
||||
{% if s3 %}
|
||||
{% set upload = upload + ["s3_upload"] %}
|
||||
s3_upload: publish
|
||||
aws s3 sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl public-read --delete
|
||||
|
||||
{% endif %}
|
||||
{% if cloudfiles %}
|
||||
{% set upload = upload + ["cf_upload"] %}
|
||||
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) .
|
||||
|
||||
{% endif %}
|
||||
{% if github %}
|
||||
{% set upload = upload + ["github"] %}
|
||||
github: publish
|
||||
ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $$(OUTPUTDIR)
|
||||
ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
|
||||
git push origin $(GITHUB_PAGES_BRANCH)
|
||||
|
||||
.PHONY: html help clean regenerate serve serve-global devserver stopserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github
|
||||
{% endif %}
|
||||
|
||||
.PHONY: html help clean regenerate serve serve-global devserver stopserver publish {{ upload|join(" ") }}
|
||||
|
|
@ -2,23 +2,24 @@
|
|||
##
|
||||
# This section should match your Makefile
|
||||
##
|
||||
PELICAN=$${PELICAN:-$pelican}
|
||||
PELICANOPTS=$pelicanopts
|
||||
PY={{py_v}}
|
||||
PELICAN=${PELICAN:-pelican}
|
||||
PELICANOPTS={{pelicanopts}}
|
||||
|
||||
BASEDIR=$$(pwd)
|
||||
INPUTDIR=$$BASEDIR/content
|
||||
OUTPUTDIR=$$BASEDIR/output
|
||||
CONFFILE=$$BASEDIR/pelicanconf.py
|
||||
BASEDIR=$(pwd)
|
||||
INPUTDIR=$BASEDIR/content
|
||||
OUTPUTDIR=$BASEDIR/output
|
||||
CONFFILE=$BASEDIR/pelicanconf.py
|
||||
|
||||
###
|
||||
# Don't change stuff below here unless you are sure
|
||||
###
|
||||
|
||||
SRV_PID=$$BASEDIR/srv.pid
|
||||
PELICAN_PID=$$BASEDIR/pelican.pid
|
||||
SRV_PID=$BASEDIR/srv.pid
|
||||
PELICAN_PID=$BASEDIR/pelican.pid
|
||||
|
||||
function usage(){
|
||||
echo "usage: $$0 (stop) (start) (restart) [port]"
|
||||
echo "usage: $0 (stop) (start) (restart) [port]"
|
||||
echo "This starts Pelican in debug and reload mode and then launches"
|
||||
echo "an HTTP server to help site development. It doesn't read"
|
||||
echo "your Pelican settings, so if you edit any paths in your Makefile"
|
||||
|
|
@ -27,55 +28,55 @@ function usage(){
|
|||
}
|
||||
|
||||
function alive() {
|
||||
kill -0 $$1 >/dev/null 2>&1
|
||||
kill -0 $1 >/dev/null 2>&1
|
||||
}
|
||||
|
||||
function shut_down(){
|
||||
PID=$$(cat $$SRV_PID)
|
||||
if [[ $$? -eq 0 ]]; then
|
||||
PID=$(cat $SRV_PID)
|
||||
if [[ $? -eq 0 ]]; then
|
||||
if alive $PID; then
|
||||
echo "Stopping HTTP server"
|
||||
kill $$PID
|
||||
kill $PID
|
||||
else
|
||||
echo "Stale PID, deleting"
|
||||
fi
|
||||
rm $$SRV_PID
|
||||
rm $SRV_PID
|
||||
else
|
||||
echo "HTTP server PIDFile not found"
|
||||
fi
|
||||
|
||||
PID=$$(cat $$PELICAN_PID)
|
||||
if [[ $$? -eq 0 ]]; then
|
||||
if alive $$PID; then
|
||||
PID=$(cat $PELICAN_PID)
|
||||
if [[ $? -eq 0 ]]; then
|
||||
if alive $PID; then
|
||||
echo "Killing Pelican"
|
||||
kill $$PID
|
||||
kill $PID
|
||||
else
|
||||
echo "Stale PID, deleting"
|
||||
fi
|
||||
rm $$PELICAN_PID
|
||||
rm $PELICAN_PID
|
||||
else
|
||||
echo "Pelican PIDFile not found"
|
||||
fi
|
||||
}
|
||||
|
||||
function start_up(){
|
||||
local port=$$1
|
||||
local port=$1
|
||||
echo "Starting up Pelican and HTTP server"
|
||||
shift
|
||||
$$PELICAN --debug --autoreload -r $$INPUTDIR -o $$OUTPUTDIR -s $$CONFFILE $$PELICANOPTS &
|
||||
pelican_pid=$$!
|
||||
echo $$pelican_pid > $$PELICAN_PID
|
||||
mkdir -p $$OUTPUTDIR && cd $$OUTPUTDIR
|
||||
$PY -m pelican.server $$port &
|
||||
srv_pid=$$!
|
||||
echo $$srv_pid > $$SRV_PID
|
||||
cd $$BASEDIR
|
||||
$PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS &
|
||||
pelican_pid=$!
|
||||
echo $pelican_pid > $PELICAN_PID
|
||||
mkdir -p $OUTPUTDIR && cd $OUTPUTDIR
|
||||
$PY -m pelican.server $port &
|
||||
srv_pid=$!
|
||||
echo $srv_pid > $SRV_PID
|
||||
cd $BASEDIR
|
||||
sleep 1
|
||||
if ! alive $$pelican_pid ; then
|
||||
if ! alive $pelican_pid ; then
|
||||
echo "Pelican didn't start. Is the Pelican package installed?"
|
||||
return 1
|
||||
elif ! alive $$srv_pid ; then
|
||||
echo "The HTTP server didn't start. Is there another service using port" $$port "?"
|
||||
elif ! alive $srv_pid ; then
|
||||
echo "The HTTP server didn't start. Is there another service using port" $port "?"
|
||||
return 1
|
||||
fi
|
||||
echo 'Pelican and HTTP server processes now running in background.'
|
||||
|
|
@ -84,17 +85,17 @@ function start_up(){
|
|||
###
|
||||
# MAIN
|
||||
###
|
||||
[[ ($$# -eq 0) || ($$# -gt 2) ]] && usage
|
||||
[[ ($# -eq 0) || ($# -gt 2) ]] && usage
|
||||
port=''
|
||||
[[ $$# -eq 2 ]] && port=$$2
|
||||
[[ $# -eq 2 ]] && port=$2
|
||||
|
||||
if [[ $$1 == "stop" ]]; then
|
||||
if [[ $1 == "stop" ]]; then
|
||||
shut_down
|
||||
elif [[ $$1 == "restart" ]]; then
|
||||
elif [[ $1 == "restart" ]]; then
|
||||
shut_down
|
||||
start_up $$port
|
||||
elif [[ $$1 == "start" ]]; then
|
||||
if ! start_up $$port; then
|
||||
start_up $port
|
||||
elif [[ $1 == "start" ]]; then
|
||||
if ! start_up $port; then
|
||||
shut_down
|
||||
fi
|
||||
else
|
||||
|
|
@ -14,17 +14,23 @@ from pelican.server import ComplexHTTPRequestHandler
|
|||
env.deploy_path = 'output'
|
||||
DEPLOY_PATH = env.deploy_path
|
||||
|
||||
{% if ssh %}
|
||||
# Remote server configuration
|
||||
production = '$ssh_user@$ssh_host:$ssh_port'
|
||||
dest_path = '$ssh_target_dir'
|
||||
production = '{{ssh_user}}@{{ssh_host}}:{{ssh_port}}'
|
||||
dest_path = '{{ssh_target_dir}}'
|
||||
|
||||
{% endif %}
|
||||
{% if cloudfiles %}
|
||||
# Rackspace Cloud Files configuration settings
|
||||
env.cloudfiles_username = '$cloudfiles_username'
|
||||
env.cloudfiles_api_key = '$cloudfiles_api_key'
|
||||
env.cloudfiles_container = '$cloudfiles_container'
|
||||
env.cloudfiles_username = '{{cloudfiles_username}}'
|
||||
env.cloudfiles_api_key = '{{cloudfiles_api_key}}'
|
||||
env.cloudfiles_container = '{{cloudfiles_container}}'
|
||||
|
||||
{% endif %}
|
||||
{% if github %}
|
||||
# Github Pages configuration
|
||||
env.github_pages_branch = "$github_pages_branch"
|
||||
env.github_pages_branch = '{{github_pages_branch}}'
|
||||
{% endif %}
|
||||
|
||||
# Port for `serve`
|
||||
PORT = 8000
|
||||
|
|
@ -68,6 +74,7 @@ def preview():
|
|||
"""Build production version of site"""
|
||||
local('pelican -s publishconf.py')
|
||||
|
||||
{% if cloudfiles %}
|
||||
def cf_upload():
|
||||
"""Publish to Rackspace Cloud Files"""
|
||||
rebuild()
|
||||
|
|
@ -76,6 +83,7 @@ def cf_upload():
|
|||
'-U {cloudfiles_username} '
|
||||
'-K {cloudfiles_api_key} '
|
||||
'upload -c {cloudfiles_container} .'.format(**env))
|
||||
{% endif %}
|
||||
|
||||
@hosts(production)
|
||||
def publish():
|
||||
|
|
@ -89,7 +97,9 @@ def publish():
|
|||
extra_opts='-c',
|
||||
)
|
||||
|
||||
{% if github %}
|
||||
def gh_pages():
|
||||
"""Publish to GitHub Pages"""
|
||||
rebuild()
|
||||
local("ghp-import -b {github_pages_branch} {deploy_path} -p".format(**env))
|
||||
{% endif %}
|
||||
|
|
@ -2,15 +2,15 @@
|
|||
# -*- coding: utf-8 -*- #
|
||||
from __future__ import unicode_literals
|
||||
|
||||
AUTHOR = $author
|
||||
SITENAME = $sitename
|
||||
AUTHOR = {{author}}
|
||||
SITENAME = {{sitename}}
|
||||
SITEURL = ''
|
||||
|
||||
PATH = 'content'
|
||||
|
||||
TIMEZONE = $timezone
|
||||
TIMEZONE = {{timezone}}
|
||||
|
||||
DEFAULT_LANG = $lang
|
||||
DEFAULT_LANG = {{lang}}
|
||||
|
||||
# Feed generation is usually not desired when developing
|
||||
FEED_ALL_ATOM = None
|
||||
|
|
@ -29,7 +29,7 @@ LINKS = (('Pelican', 'http://getpelican.com/'),
|
|||
SOCIAL = (('You can add links in your config file', '#'),
|
||||
('Another social link', '#'),)
|
||||
|
||||
DEFAULT_PAGINATION = $default_pagination
|
||||
DEFAULT_PAGINATION = {{default_pagination}}
|
||||
|
||||
# Uncomment following line if you want document-relative URLs when developing
|
||||
#RELATIVE_URLS = True
|
||||
|
|
@ -11,7 +11,7 @@ sys.path.append(os.curdir)
|
|||
from pelicanconf import *
|
||||
|
||||
# If your site is available via HTTPS, make sure SITEURL begins with https://
|
||||
SITEURL = '$siteurl'
|
||||
SITEURL = '{{siteurl}}'
|
||||
RELATIVE_URLS = False
|
||||
|
||||
FEED_ALL_ATOM = 'feeds/all.atom.xml'
|
||||
Loading…
Add table
Add a link
Reference in a new issue