圧倒亭グランパのブログ

30年後の自分にもわかるように書くブログ

日付リストを簡単に表示するCLIツールを作った

dast というCLIツールを作りました。

github.com

以下でinstallできます。Macでのみ動作確認しています。

homebrew

$ brew tap at-grandpa/homebrew-dast.cr
$ brew install dast.cr

git clone

$ brew update
$ brew install crystal-lang
$ git clone https://github.com/at-grandpa/dast.cr.git
$ cd dast.cr
$ make install

 

業務中だったり日頃の開発だったりで、日付のリストを用意したい時がまれによくあります。そんなとき、直近の1週間であれば、dastと打つだけで生成できます。

$ dast
'2018-03-15','2018-03-16','2018-03-17','2018-03-18','2018-03-19','2018-03-20','2018-03-21'

この程度のコマンドであれば、rubyワンライナーだったり、シェルスクリプトなりでサクッと作ってしまうのが良さそうです。しかし、ちょうど最近 Crystal の CLI ビルダーライブラリをアップデートした ので、良い機会だしドッグフーディングしようと思いました。結果、自分が使いやすいように作ったライブラリはやっぱり使いやかったですし、ライブラリのバグも発見できました。加えて、日頃の自分の作業も短縮できたので良かったと思います。

 

dast はその他、次のような機能も備えています。

日付を指定すれば、現時刻からその日付までの間でリストを出力します。

$ dast 2018-03-17
'2018-03-17','2018-03-18','2018-03-19','2018-03-20','2018-03-21'

日付の差分の指定もできます。マイナスは ~ で指定します。以下は、3日前から本日までの日付を表示します。

$ dast ~3day
'2018-03-18','2018-03-19','2018-03-20','2018-03-21'

日付を2つ与えれば、その日付間でのリストを表示します。

$ dast 2018-03-25 2018-03-27
'2018-03-25','2018-03-26','2018-03-27'

与えた日付からの差分も指定できます。

$ dast 2018-03-27 ~3day
'2018-03-24','2018-03-25','2018-03-26','2018-03-27'

リストのインターバル、フォーマット、デリミタ、クォートも指定できます。以下は

  • 2018-03-21 12:00:00 から1時間の範囲内
  • 20分ごとにリストを表示
  • 出力フォーマットは %Y-%m-%d %H:%M:%S
  • デリミタは |
  • クォートは "

となります。

$ dast '2018-03-21 12:00:00' 1h --interval=20min --format='%Y-%m-%d %H:%M:%S' --delimiter=' | ' --quote='"'
"2018-03-21 12:00:00" | "2018-03-21 12:20:00" | "2018-03-21 12:40:00" | "2018-03-21 13:00:00"

日付と曜日を出したいなら、フォーマットを変更すればokです。フォーマットは ここ に準じます。

$ dast -f "%F (%a)"
'2018-03-15 (Thu)','2018-03-16 (Fri)','2018-03-17 (Sat)','2018-03-18 (Sun)','2018-03-19 (Mon)','2018-03-20 (Tue)','2018-03-21 (Wed)'

また、作業中は日付リストをクリップボードに保存したい時が多いです。Macの場合はパイプで pbcopy に繋ぐだけでクリップボードに保存できます。すぐにペーストできます。

$ dast -f "%F (%a)" | pbcopy

 

使ってみたい方は使ってみてください。