先日の日記に書いたように、BitBucketに日記をPUSHするとゴニョゴニョしてGitHub Pagesで公開されるという仕組みが完成した。
日記を一日分追加すると、その日の日記ページのHTMLができる。のみならず、トップページに直近5日分の日記が載っているのでそこも再生成。すると日記が一日分後ろに押し出されて、ページネーション(次のページ)があるのでその後ろのページ全部が再生成させる。また日記につけたタグから、そのタグのリストページも再生成される。結果、数百のファイルが再生成される。うわーお、無駄が多い。でもなぁ、日記を一日分ずつ読み込むのもちょっと馬鹿馬鹿しい。まあそれはともかく、自動的にhtmlは作れるようになった。
では次は日記を新規作成するところだ。コマンドラインから Hugo new ファイル名
でページのひな形が書き込まれたMarkdownファイルが完成する。これは楽チン……、と思いたいところだがもっと楽にしたい。
Automatorを使って、例えば以下のような感じのシェルスクリプトをアプリ化(というかアイコン化)して、ボタン一発で今日の日記を作ってエディタを開く。
cd 'Hugoの作業ディレクトリ'
# この例では年別にファイルを格納したいので、post/YYYYディレクトリを作成している
targetYear=`date +"%Y"`
mkdir -p $targetYear
# 日付からファイル名を生成する。この例では post/YYYY/YYYY-MM-DD.mfd
targetDate=`date +"%Y-%m-%d"`
targetFile="post/$targetYear/$targetDate.md"
# 当該ファイルがなければ新規作成
if [ ! -e "content/$targetFile" ]; then
/usr/local/bin/hugo new $targetFile
fi
# この例ではアプリを指定せずにファイルを開く
open "content/$targetFile"
これで、日記を書くところまでアイコンクリック一回でだけで進められる。
本当は、日記を書き終えたあともcommitとpushをアイコンクリック一回でやりたいが、エラー処理とか連打時の動作とか考えるとちょっと面倒そうなので、いったんここまでとして、今日記を書いているこのファイルをこのあと手動でcommitしてpushすることにする。
……コミット時のメッセージが日本語だとうまく動かない?