Open14

文字数カウントREADME

ねこみみだいまおうねこみみだいまおう

やりたいこと

文字数をカウントしてリポジトリのREADMEに表示したい。
どれだけ働いたのかな? を見る。あとグラフとかにもしたい。
GithubActionsで一週間程度を毎日自動更新で表示する。

ねこみみだいまおうねこみみだいまおう

mermaid.jsでいいじゃん! とか思ってたけど折れ線グラフがなかった。そんなことある……? みんな使うくない……?
たぶん実装もそんな面倒じゃないと思うんだけど……。
選択肢としてはsvgでも生成するか、mermaidのUser Journeyを使うか。

ねこみみだいまおうねこみみだいまおう
  • svg
    線だけならいいが目盛りをつけるのがしんどい
  • R
    200年くらい前に使ったきりなのでさすがに覚えてない
  • nodeでなんか適当なjsのライブラリ引っ張ってくる
    悪くはないが、数が多いので調べるのが面倒
  • Pythonのなんか
    GithubActionsに実行環境インストールするのがイヤ
  • mermaidのUser Journey
    誰も使ってなさそう
ねこみみだいまおうねこみみだいまおう

求める粒度と顔文字によるわかりやすいフィーリングによってmermaidのUser Journeyに決定した。
シェルで文字数を出して目標値で5段階にするというのもよい。最大値が必要かどうかは後で考える。

ねこみみだいまおうねこみみだいまおう

shellでmarkdown内のmermaidを編集・置換するのに絶望した。
rustかgoで適当になんかバイナリ作ってやるか、それともGithubActionsでnode環境を作ってjsで適当に実行するか。
いやー自動化するならshellはいろいろ書く必要があるんだけどやっぱしんどい。Unityエンジニアだから書き慣れているC#も考えるんだけど、シングルバイナリが大きすぎるんだよね……。
多分誰もC#にはそんなこと求めてないからそれでいいんだけど。これがUnityプロジェクトならどうせ画像とかデカいしいいじゃん! する。

ねこみみだいまおうねこみみだいまおう

どうやっても配列の途中にinsertすると改行が消えちゃう。
IFSを変えてもだめ。
しょうがないので配列をもう1つ作って必要な文だけindexに足していくしかないか。うわーなんかセンスがない!

ねこみみだいまおうねこみみだいまおう

なんかいろいろあったけど完成しました。
デイリーで動くので、一週間ほど動かしてみて大丈夫そうならgistにでも貼ろうかな。

ねこみみだいまおうねこみみだいまおう

shell

https://eng-entrance.com/linux-command-cut
https://tex2e.github.io/blog/shell/cut-from-right
https://www.wakuwakubank.com/posts/337-linux-grep/
https://ex1.m-yabe.com/archives/2110
https://webkaru.net/dev/bash-loop-for-while/
https://amano41.hatenablog.jp/entry/bash-for-loop-over-array
https://www.koikikukan.com/archives/2019/11/06-235555.php
https://www.delftstack.com/ja/howto/linux/how-to-concatenate-strings-using-bash/
https://it-memo.work/linux-shell-script-basic-parameter-argument/
https://stackoverflow.com/questions/6990484/how-to-checkout-in-git-by-date
https://scrapbox.io/snaka/git_checkout_で特定の日付を指定する
https://unix.stackexchange.com/questions/328882/how-to-add-remove-an-element-to-from-the-array-in-bash
https://stackoverflow.com/questions/65340854/insert-an-element-at-a-certain-index-in-bash
https://ostechnix.com/bash-indexed-array/
https://www.delftstack.com/ja/howto/linux/how-to-perform-increment-and-decrement-operation-in-bash/
https://syutaku.blog/bash-array-unset-note/
https://genzouw.com/entry/2023/02/05/090017/3209/
https://tex2e.github.io/blog/shell/bash-and-or
https://qiita.com/egawa_kun/items/196cd354c0d8e4e0fefc
https://shellscript.sunone.me/if_and_test.html
https://azisava.sakura.ne.jp/programming/0010.html
https://stackoverflow.com/questions/229551/how-to-check-if-a-string-contains-a-substring-in-bash
https://maku77.github.io/linux/var/array-size.html
https://linux.just4fun.biz/?逆引きシェルスクリプト/スペースが含まれる文字列を1行として扱う方法
https://qiita.com/Jazuma/items/0bd013b3981cd04a5319
https://qiita.com/ko1nksm/items/af780da4a8ef8b1c5beb
https://qiita.com/ko1nksm

ねこみみだいまおうねこみみだいまおう

GithubActionsにCIにと結構よくshellを書いてるはずなんだけど未だに何一つ覚えられないのはなんでだろう? 言語体系が自分がよく使ってるやつとだいぶ違うからだろうか。謎。

ねこみみだいまおうねこみみだいまおう

https://blog.kyubuns.dev/entry/2021/07/04/212005
https://blog.kyubuns.dev/entry/2021/07/09/231624

結局、GithubActionsかSelfHostedか更なる外部サービスかどれが一番安いんだろう?
人間のメンテ時間を考えるとすべてGithubActionsに投げるのが一番安い気がしている。めっっっっちゃビルドする! というならSelfHostedの方が安くなるだろうけどいったい何回ビルドすればいいんだ?