milkode の導入

# はじめに

複数パッケージのソースコードを対象にgrepするのはめんどくさい。
手早くテキストやソースコードにgrepかけてくれるものとしてmilkodeを入れてみる。

# env

```bash
$ uname -r
4.19.104-microsoft-standard
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"
```

# install

```bash
$ sudo apt install ruby ruby-dev
$ sudo gem install milkode
```

# initialize

```bash
$ milk init --default
Deprecation warning: Expected string default value for '--port'; got 9292 (numeric).
This will be rejected in the future unless you explicitly pass the options `check_default_type: false` or call `allow_incompatible_default_type!` in your code
You can silence deprecations warning by setting the environment variable THOR_SILENCE_DEPRECATION.
create     : /home/tkhshmsy/.milkode/milkode.yaml
create     : /home/tkhshmsy/.milkode/db/milkode.db created.
```

# add/remove

すでに4つほどpackageを追加済み。  

```bash
$ git clone https://github.com/tkhshmsy/hogehoge.git
Cloning into 'hogehoge'...
remote: Enumerating objects: 87, done.
remote: Total 87 (delta 0), reused 0 (delta 0), pack-reused 87
Unpacking objects: 100% (87/87), 599.91 KiB | 777.00 KiB/s, done.

$ milk add hogehoge/
Deprecation warning: Expected string default value for '--port'; got 9292 (numeric).
This will be rejected in the future unless you explicitly pass the options `check_default_type: false` or call `allow_incompatible_default_type!` in your code
You can silence deprecations warning by setting the environment variable THOR_SILENCE_DEPRECATION.
package    : hogehoge
github     : tkhshmsy/hogehoge
result     : 1 packages, 73 records, 73 add. (0.98sec)
*milkode*  : 5 packages, 976 records in /home/tkhshmsy/.milkode/db/milkode.db.

$ milk rm hogehoge/
Deprecation warning: Expected string default value for '--port'; got 9292 (numeric).
This will be rejected in the future unless you explicitly pass the options `check_default_type: false` or call `allow_incompatible_default_type!` in your code
You can silence deprecations warning by setting the environment variable THOR_SILENCE_DEPRECATION.
rm_package : hogehoge
result     : 1 packages, 73 records. (0.97sec)
*milkode*  : 4 packages, 903 records in /home/tkhshmsy/.milkode/db/milkode.db.
 ```

# update

```bash
$ milk update --all
Deprecation warning: Expected string default value for '--port'; got 9292 (numeric).
This will be rejected in the future unless you explicitly pass the options `check_default_type: false` or call `allow_incompatible_default_type!` in your code
You can silence deprecations warning by setting the environment variable THOR_SILENCE_DEPRECATION.
package    : package1
package    : package2
package    : package3
package    : package4
result     : 4 packages, 903 records. (0.18sec)
*milkode*  : 4 packages, 903 records in /home/tkhshmsy/.milkode/db/milkode.db.
```

# settings

- コマンドラインからの検索には`gmilk`を使う
- 色付き、全パッケージ検索に設定

```bash:.bashrc
alias gmilk='gmilk -a --color'
```

# Web UI

WebUIを起動する。デフォルトの公開ポートは9292。

```bash
$ milk web -o `hostname -I` -n
```

## WebUIをWindows側から起動できるようにする

Windowsでショートカットを作る
- デスクトップの何もないところで右クリック=>`ショートカットの作成`
- wsl.exeを実行するように設定
  - 項目にwslとだけ書いて次へ(参照をする必要なし)
- ショートカット名を編集、完了
- できたショートカットを右クリック、`プロパティ`
- リンク先にコマンドラインを書く

```powershell
wsl.exe - u <User> -- milk web -o `hostname -I` -n
```

できたショートカットをダブルクリックして実行すると<User>でmilk webが実行される。  
IPアドレスとポート番号は標準出力に出ているのでそれをブラウザで開く。

止めるときは、

- このウインドウをAlt+F4してもプロセスは止まらない
- プロセスを止めたいときはCTRL+Cで終了する、とウインドウも閉じる
  - 別口からkillでもいい

# どうなった？

単一のパッケージ内ならあまり必要性はないが、

- 複数パッケージにまたがる処理を追いかける時
- 他のパッケージのコードを参考に書く時

などには重宝する。