archive管理を適当にやった話
あれだ。面倒なのでコードだけ乗っける
#!/bin/bash DATE=$(date +%F) WORKDIR=./ ARCHIVE=${WORKDIR}/archives LOGFILE=${ARCHIVE}/.log function archive_less { TIME="" while : do echo -n "When the article written?([ENTER] to display list): "; read TIME; if [[ ${TIME} != "" ]] ; then break fi tail_log; done less ./archives/blog-${TIME}.txt } function tail_log { tail ${LOGFILE} } function make_commit { ./hatenaencode.scm blog.txt cp blog.txt ./archives/blog-${DATE}.txt cp blog.txt-converted ./archives/blog-${DATE}.txt-converted TITLE=$(head -1 blog.txt) if [[ $(grep ${DATE} ${LOGFILE}) == "" ]] ; then echo "${DATE}: ${TITLE}" >> ${LOGFILE} else sed -i '/${DATE}/c ${DATE}: ${TITLE}' ${LOGFILE} fi } function clean { cat /dev/null > blog.txt rm -f blog.txt-converted } function usage { echo "Bad Usage $1 -- Use -h or --help for usage" } function help { echo "Usage: $0 [OPTION]..." echo "Add FILE in archive directory" echo "Available options:" echo "make, --make compile file and move file to archive dir" echo "less, --less see archives. Specify files by yyyy-mm-dd" echo "log, --log show tail of log file" echo "-h, --help display this menu" echo "clean, --clean clean all blog.txt" } while [[ "$1" != "" ]] ; do case $1 in 'make' | '--make' ) make_commit ;; 'less' | '--less' ) archive_less ;; 'log' | '--log' ) tail_log ;; 'clean' | '--clean' ) clean ;; '-h' | '--help' ) help; exit 1;; * ) usage $1; exit 1;; esac shift; done
使い方はworkdirに適当にhogeとか名前を付けておいてshellにて
% ./hoge [make | less | log | clean]
とするとblog.txtに書いてある内容が前々回のコードhatenaencode.scmを通してarchiveに登録されます。
なお同じ日の投稿は上書きされます注意。
記事の下書きとかありません、バックアップも無いです。
一応logに書いた日とその記事の一行目が残るようにしました。
lessするとinteractiveに書いた日付を入れるとarchiveからとって来てくれます。
いや、直接./archivesの中見て補完で捜したほうが…って突っ込みはなしで。
一応今回は必要なかったオプション引数的なことも意識したので、
% ./hoge make && ./hoge clean
% ./hoge make clean
は効果としてほぼ同じで二度手間は避けれる仕様です(オプション使うならgetopts使えという突っ込みもなし)。
最近すげークソみたいなコードばっか書いてる。