FLAGS := -ldflags "-s -w" -trimpath
NOCGO := CGO_ENABLED=0

build:
	go vet && go fmt
	${NOCGO} go build ${FLAGS} -o gossa

install:
	sudo cp gossa /usr/local/bin

run:
	./gossa -verb=true test-fixture

run-ro:
	./gossa -verb=true -ro=true test-fixture

run-extra:
	./gossa -verb=true -prefix="/fancy-path/" -k=false -symlinks=true test-fixture

ci: build-all test
	echo "done"

test:
	-@cd test-fixture && ln -s ../support .; true
	go test -cover -c -tags testrunmain

	timeout -s SIGINT 3 ./gossa.test -test.coverprofile=normal.out -test.run '^TestRunMain' -verb=true test-fixture &
	sleep 2
	go test -run TestNormal
	sleep 1

	timeout -s SIGINT 3 ./gossa.test -test.coverprofile=extra.out -test.run '^TestRunMain' -prefix='/fancy-path/' -k=false -symlinks=true test-fixture &
	sleep 2
	go test -run TestExtra
	sleep 1

	timeout -s SIGINT 3 ./gossa.test -test.coverprofile=ro.out -test.run '^TestRunMain' -ro=true test-fixture &
	sleep 2
	go test -run TestRo
	sleep 1

	# gocovmerge ro.out extra.out normal.out > all.out
	# go tool cover -html all.out
	# go tool cover -func=all.out | grep main | grep '9.\..\%'

watch:
	ls gossa.go gossa_test.go gossa-ui/* | entr -rc make build run

watch-extra:
	ls gossa.go gossa_test.go gossa-ui/* | entr -rc make build run-extra

watch-ro:
	ls gossa.go gossa_test.go gossa-ui/* | entr -rc make build run-ro

watch-test:
	ls gossa.go gossa_test.go gossa-ui/* | entr -rc make test

build-all: build
	${NOCGO}  GOOS=linux    GOARCH=amd64  go build ${FLAGS} -o builds/gossa-linux-x64
	${NOCGO}  GOOS=linux    GOARCH=arm    go build ${FLAGS} -o builds/gossa-linux-arm
	${NOCGO}  GOOS=linux    GOARCH=arm64  go build ${FLAGS} -o builds/gossa-linux-arm64
	${NOCGO}  GOOS=darwin   GOARCH=amd64  go build ${FLAGS} -o builds/gossa-mac-x64
	${NOCGO}  GOOS=darwin   GOARCH=arm64  go build ${FLAGS} -o builds/gossa-mac-arm64
	${NOCGO}  GOOS=windows  GOARCH=amd64  go build ${FLAGS} -o builds/gossa-windows.exe
	sha256sum builds/*

clean:
	-rm gossa
	-rm gossa-linux64
	-rm gossa-linux-arm
	-rm gossa-linux-arm64
	-rm gossa-mac
	-rm gossa-windows.exe

