📒

情報を集約出来るマークダウン形式の日誌を作成するCLIツールを作った

2021/05/14に公開

何を作ったか

https://github.com/kawagh/ment
メモ、日誌といった多様なドキュメントを手早くとるためのPythonで書かれた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