要約
git で日記をいい感じに管理したいという思いを込めて日記管理用の cli ツールを作成いたしました。
https://github.com/komem3/go-diary
背景
バージョン管理やリモートリポジトリを使って日記・日報を管理したいという思いが有りましたが、いかんせんディレクトリが汚くなってしまうのが問題でした。定期的にディレクトリを綺麗に整理する根気があれば良いのですが、三日坊主になりやすい私なんかはそれだけで日記を書くのが嫌になってしまいます。
そこで、日記のファイルをいい感じのディレクトリ構造で管理するツールを作成しました。
インストール
go で作成したツールのため、以下のようにダウンロードします。
go get github.com/komem3/go-diary/cmd/diary
使い方
$ diary -h
Diary is a CLI libray for managing your diary.
This application can format your diary directory, and make index file.
Usage:
diary [command]
Available Commands:
format Format directory
help Help about any command
init Initialize directory
new Generate new diary
Flags:
-h, --help help for diary
-v, --version version for diary
Use "diary [command] --help" for more information about a command.
今回の作成したツールには以下の3つのコマンドがあるため、それぞれ解説していきます。
##init
ツールをインストールした後、日記を管理したいディレクトリで最初に実行するコマンドです。
このコマンドを実行することで、他コマンドで使われるテンプレートファイルが生成されます。
$ ls
$ diary init
$ tree
tree
.
└── template
├── diary.template.md
└── top.template.md
このコマンドで生成したテンプレートファイルを編集することで後程紹介するコマンドの出力を変更することができます。
new
本日の日記を生成するコマンドです。デフォルトでは本日の日付が先頭に書かれたファイルが生成されます。この時生成されるファイル名の日付情報を元にformatコマンドはフォーマットしていきます。
(記事作成日2020年5月31日)
$ diary new
$ cat 20200531.md
2020/05/31 (Sunday)
また、先程のinitコマンドで生成したテンプレートファイルを編集することで、生成されるファイルの出力内容を変更出来ます。
echo "今日やること" >> template/diary.template.md
$ diary new
$ cat 20200531.md
2020/05/31 (Sunday)
今日やること
##format
日記ファイルをそのファイル名に基づいてフォルダに格納します。格納後、それぞれのファイルがどこにあるか分かりやすいようにREADME.md
ファイルにリンクを書き込みます。
$ ls
20021201.md 20200101.md 20200102.txt template
$ diary format
.
├── 2002
│ └── 12
│ └── 20021201.md
├── 2020
│ ├── 01
│ │ ├── 20200101.md
│ │ └── 20200102.txt
│ └── 02
│ └── 20200202.org
├── README.md
└── template
├── diary.template.md
└── top.template.md
出力状態としては、実際のリポジトリを見てみるのが分かりやすいと思います。
https://github.com/komem3/go-diary/tree/master/sample
こちらも先程同様、テンプレートのファイルを変更することで好きな主力内容に変更することができます。
まとめ
git を使った日記管理を行うために、「日記の作成」「日記の整理」「日記の索引」の3つを行えるコマンドを作成いたしました。
go言語はcliツールを作り易かったのですが、日付のフォーマット指定が特殊なのがいまいちでした。そこら辺の go 特有のものや、設定の変更しやすくすることが今後の課題に思っています。