Go Makefile
MAIN_FILE=cmd/cmd-name/main.go
BINARY_NAME=main
BINARY_FOLDER=bin
TEST_COVERAGE_FILE=coverage.out

build: build_linux build_windows

build_linux:
	GOARCH=amd64 GOOS=linux go build -o ${BINARY_FOLDER}/${BINARY_NAME}-linux ${MAIN_FILE}

build_windows:
	GOARCH=amd64 GOOS=windows go build -o ${BINARY_FOLDER}/${BINARY_NAME}-windows ${MAIN_FILE}

clean:
	go clean
	rm ${BINARY_FOLDER}/${BINARY_NAME}-linux
	rm ${BINARY_FOLDER}/${BINARY_NAME}-windows
	rm ${TEST_COVERAGE_FILE}

run:
	go run ${MAIN_FILE}

test:
	go test -race ./...

test_coverage:
	go test ./... -coverprofile=${TEST_COVERAGE_FILE}

format:
	go fmt ./...

tidy:
	go mod tidy

vet:
	go vet ./...

why:
	go mod why -m $(module)

ready: tidy format test vet