情報を集約出来るマークダウン形式の日誌を作成するCLIツールを作った
何を作ったか
主な機能としては
- 即座に今日の日付のファイルの編集画面に移る(日誌をすぐ書く)
- 過去に作成したファイル群から直近一週間かテーマに応じてフィルタした文書を生成する(日誌をまとめる)
の2つがあります。
手元にすぐに記入できる一冊のノートがあって、テーマに応じて後からルーズリーフのようにまとめなおして見直すことが出来る、というとイメージしやすいかもしれません。
国語や数学などあらゆる科目のノートを一冊に記録して楽をしていたら(あるいは時間的制約などからやむをえず)、見返す段になって他の科目のページが度々現れて見返すのに苦労した経験はないでしょうか。
記録までの楽さを維持しつつそのようなカオスなノートから科目ごとのノートを苦労せずに取り出すことをコンセプトに作りました。
どう使うか
インストール
pip install ment
日誌を書く
m
で今日の日付のディレクトリが作成されその中のファイルの編集画面に移動します。
デフォルトではVimで編集しますが.bashrcなどに環境変数を設定すれば他のエディタで編集することも出来ます。
日誌を集約する
蓄積したファイル群から見直したい情報を抽出するには
コマンドとしては
m synthe <見出し名> # 例えば `m synthe math`
で実行できます。
見出し名をmath
とすれば、math
の見出しで書いた内容を集約したファイルが生成されます。
生成されたファイルはm read <見出し名>
で確認できます。
ここでの見出し名
とはマークダウン記法の見出し# 見出し名
の部分です。
正規表現で見出しの行を抽出してそこを基準にファイルの中身を分割して指定した見出し名に応じたテキストのみを集約する処理を裏では行っています。
直近一週間の情報を見返したい場合はm week
でファイルを生成してm read week
でそのファイルを確認できます。
また、これまでの日付ごとにどんな見出しで書かれているかはm list
で確認することが出来ます。
補完ファイルを使用する
m
の後にサブコマンド(synthe,read,week,list)があり、その後に見出し名が要求されるなどタイプ量が増えているので補完ファイルを作りました。
bashのtab補完が効く場合は、
.bash_completion
などに以下の内容を追加して読み込ませればタイプ量は抑えられます。
#!/bin/bash
if [ -z "$MENT_DIR" ]; then
export MENT_DIR="$HOME/ment_dir"
fi
_ment()
{
local cur prev cword opts
_get_comp_words_by_ref -n : cur prev cword
opts="synthe week list read"
if [ "${cword}" -eq 1 ]; then
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
elif [ "${prev}" = "read" ]; then
COMPREPLY=( $(compgen -W "$(ls $MENT_DIR/synthe/)" -- "${cur}") )
elif [ "${prev}" = "synthe" ]; then
COMPREPLY=( $(compgen -W " $(ls $MENT_DIR/synthe/)" -- "${cur}") )
fi
}
complete -F _ment m
Discussion