program = day-17

GO = go
CLI_DIR := cmd/cli
BIN_DIR := bin

EXE := $(BIN_DIR)/$(program)

.DEFAULT_GOAL := build

.PHONY: fmt vet build bench clean
fmt:        
	$(GO) fmt ./...

vet: fmt        
	$(GO) vet ./...

build: vet | $(BIN_DIR)
	$(GO) build -o $(EXE) ./$(CLI_DIR)

bench:
	$(GO) test ./internal/one/ -bench=. > internal/one/benchmark
	$(GO) test ./internal/two/ -bench=. > internal/two/benchmark
	$(GO) test . -count=10 -bench=. > benchmark

$(BIN_DIR):
	@mkdir -p $@

clean:
	@rm -rv $(BIN_DIR)