はじめに
GoのEchoを少し触っていて、Flaskのように変更適用時に自動でリフレッシュしてくれる機能があれば便利だなと思いました。特に、ソースコードに影響を及ぼさずに外部から環境を構築することが、ミスを減らすために重要だと感じ、シェルスクリプトを書きました。コイツは、カレント以下の変更を検知するようにしてあるので、./module/
等の変更にも対応してくれます。
まあまあ便利なものができたなと思っているので、よかったら使ってみてください。
実行環境
fswatch
を使います。
# Mac
$ brew install fswatch
# Ubuntu
$ sudo apt install fswatch
シェルスクリプト
Makefile
でmake run
を設定していれば、当スクリプトを同一ディレクトリに配置してそのまま実行すると良いです。
autoreloader.sh
#!/bin/bash
function cleanup()
{
app_pid=`/bin/ps -fu $USER| grep "make run" | grep -v "grep" | awk '{print $2}'`
if [[ ${#app_pid} != 0 ]]
then
kill ${app_pid}
fi
}
trap cleanup EXIT
while :;
do
make
make run &
app_pid=`/bin/ps -fu $USER| grep "make run" | grep -v "grep" | awk '{print $2}'`
fswatch_result=$(fswatch -1 .)
kill ${app_pid}
done