Automatically restart golang application on source code change

Dulu saya selalu menggunakan fresh untuk membantu saya menjalankan ulang program yang ditulis menggunakan golang secara otomatis tiap kali source code program berubah. Namun karena struktur direktori yang sedikit berbeda, saya perlu mencari cara lain.

Berbekal fswatch dan Makefile, masalah ini akhirnya terselesaikan. Sebagai catatan, potongan kode di bawah baru saya tes pada sistem operasi macOS.


PID      = /tmp/unique_app_name.pid
GO_FILES = ./cmd/main.go
APP      = ./unique_app_name

serve: restart
	@fswatch -o -e ".*" -i ".*/[^.]*\\.go$$" . | xargs -n1 -I{}  make restart || make kill

kill:
	@kill `cat $(PID)` >> /dev/null 2>&1 || true

compile:
	@echo "Rebuilding application ..."
	@go build -race -x -v -o $(APP) $(GO_FILES)

restart: kill compile
	@$(APP) & echo $$! > $(PID)

.PHONY: serve restart kill compile # let's go to reserve rules names

Penyesuaian yang perlu dilakukan ada pada baris 1 hingga 3. Ganti nilai dari masing-masing variable tersebut sesuai kebutuhan. Lalu jalankan dengan perintah dibawah ini.

make serve

Happy coding!

Tinggalkan Balasan

This site uses Akismet to reduce spam. Learn how your comment data is processed.