## 環境
| 対象 | バージョン |
| ---------- | -------------------- |
| [[Ubuntu]] | 24.04.1 LTS |
| [[mise]] | `d9e6de8 2025-01-12` |
## やり方
[[mise]]の`mise watch`コマンドを利用する。内部的には[[watchexec]]を使っているらしい。
`hoge.sh`に変更があったとき、`./hoge.sh`を自動で再実行するには `.mise.toml` に以下のように書く。`tasks.dev` の `dev` はタスク名。
```toml
[tasks.dev]
run = "./hoge.sh"
```
あとは以下のコマンドで実行しておく。
```console
mise watch dev
```
## 特定のファイル/ディレクトリ変更時だけ再実行
`.mise.toml`に`sources`を追加する。
```toml
[tasks.dev]
run = "./hoge.sh"
sources = ['hoge.sh']
```
これで以下のような2つのファイルがあったとき
`hoge.sh`
```bash
#!/bin/bash
str="fixup! hoge"
if [[ "${str}" == "fixup! "* ]]; then
echo "in"
fi
source ./fuga.sh
```
`fuga.sh`
```bash
#!/bin/bash
echo "fugafugaaaa!"
```
`mise watch`コマンドを実行する
```console
mise watch dev
```
`hoge.sh`に変更があるとコマンドが実行されるが、`fuga.sh`を変更してもコマンドは実行されなくなる。
## 参考
- [Running Tasks | mise-en-place](https://mise.jdx.dev/tasks/running-tasks.html)