ROOT_DIR=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
SRC_DIR=$(ROOT_DIR)/src
MIGRATIONS_DIR=$(ROOT_DIR)/migrations
CONFIG_FILE=$(ROOT_DIR)/config.yml
BIN=$(ROOT_DIR)/bin/transport
REVISION=$(shell git describe --tags 2>/dev/null || git log --format="v0.0-%h" -n 1 || echo "v0.0-unknown")

fmt:
	@echo "==> Running gofmt"
	@gofmt -l -s -w $(ROOT_DIR)

deps:
	@echo "==> Installing dependencies"
	@go mod tidy

build: deps fmt
	@echo "==> Building"
	@cd $(SRC_DIR) && CGO_ENABLED=0 go build -o $(BIN) -ldflags "-X common.build=${REVISION}" .
	@echo $(BIN)

migrate: build
	${BIN} --config $(CONFIG_FILE) migrate -p $(MIGRATIONS_DIR)

migrate_down: build
	@${BIN} --config $(CONFIG_FILE) migrate -v down

run: migrate
	@echo "==> Running"
	@${BIN} --config $(CONFIG_FILE) run

test: migrate
	@echo "==> Running tests"
	@cd $(ROOT_DIR) && go test ./... -v -cpu 2