使用pelican心得
/ / / 阅读数:3899前言
最近在用 pelican 借用 GitHub Pages 搭建我的 小明明 s Github , 总结了些心得
写好 Makefile
ruby 有 rake,但是 python 的好像没什么好用的,还是用 Makefile,简单粗暴。先看用的
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 '
local:
./regen -q
github:-
./regen
ghp-import -b master $(OUTPUTDIR)
git push origin gh-pages:gh-pages-
git push origin master:master
.PHONY: help github local
其中的 regen 是封装的脚本,主要是为了加参数让我在本地生成 html (其中的文件连接都指到我本地), 然后我用 python -m SimpleHTTPServer 启动:
#!/usr/bin/env bash
set -e
quiet=""
output="output"
if [ "$1" = "-q" ] ; then
shift
quiet="1"
output="output-local"
export OVERRIDE_SITEURL=http://localhost:8000
fi
echo -n "regenerating..."
pelican content/ -o $output -s pelicanconf.py "$@"
echo done.
我提交到 github 的方式
上面的脚本已经很明显了,我直接执行 make github
其中的 ghp-import 的介绍很明显了:Easily import docs to your gh-pages branch
但是有个大坑: githubpages 是要从你的项目的 master 分支去获取 html 页面,而不是 gh-pages 分支,所以 Makefile 我修改了下用法
自动 push 不需要帐号密码
其实就是添加~./netrc
machine github.com login XXX@gmail.com password XXX
可配置的创建文章
想想 octopress 的 Rakefile,里面定义了一个 new_post 的方法,额 pelican 什么都没有,好吧,我用 shell 做了个
#!/bin/bash
category='设计模式'
title_resource='python设计模式之'
tags='Design Patterns'
while getopts ":c:r:g:s:t:" opt; do
case $opt in
c)
category=$OPTARG
;;
r)
title_resource=$OPTARG
;;
g)
tags=$OPTARG
;;
t)
title=$OPTARG
;;
s)
slug=$PTARG
;;
?)
echo "How to use: $0 [-c category] [-r title_resource] [-g tags] [-t title] [-s slug]" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
test "x$title" = "x" && read -r -p "Post title [前缀是 ${title_resource}]> " && title=${REPLY}
test "x$slug" = "x" && read -r -p "Post slug [比如abstract-factory]> " && slug=${REPLY}
title=`echo $title | tr "[:upper:]" "[:lower:]"]`
title=`echo $title | tr -d "[:blank:]"`
slug=`echo $slug | tr " " "-"`
fileslug=`echo $slug | tr "-" '_'`
cur_date=`date "+%Y-%m-%d"`
filename="${category}/${fileslug}.md"
author=`git config --get user.name`
echo "Creating preview"
echo "_________________________________"
echo "filename: content/$filename"
echo "title: ${title_resource}${title}"
echo "slug: python-${slug}"
echo "date: ${cur_date}"
echo "category: ${category}"
echo "tags: ${tags}"
echo "_________________________________"
echo ""
read -r -p "Are you ready to create(Y or N) >"
reply=${REPLY}
reply=`echo $reply | tr "[:upper:]" "[:lower:]"]`
test "x$reply" != "xy" && exit 1
cat > "content/"$filename <<EOF
title: ${title_resource}${title}
slug: python-${slug}
date: ${cur_date}
category: ${category}
tags: ${tags}
EOF
$EDITOR "content/"$filename