GO := GO111MODULE=on go
CGO_ENABLED := 1
LDFLAGS := -s -w
GOBUILD := CGO_ENABLED=$(CGO_ENABLED) GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CC=$(CC) CC_FOR_TARGET=$(CC_FOR_TARGET) $(GO) build
# LDFLAGS := -s -w -extldflags "-static"
# GOBUILD := CGO_ENABLED=$(CGO_ENABLED) GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) $(GO) build

.PHONY: build
build:
	$(GOBUILD) -ldflags '$(LDFLAGS)' -o bin/serverless-metering cmd/main.go

.PHONY: test
test:
	$(GO) test -v ./...

.PHONY: generate
generate:
	swag init -g pkg/server/meta_server.go

.PHONY: lint
lint:
	@echo "Running go fmt..."
	@go fmt ./...
	@echo "Running go vet..."
	@go vet ./...
	@echo "Running go mod tidy check..."
	@go mod tidy
	@git diff --exit-code go.mod go.sum || (echo "go.mod or go.sum was modified by go mod tidy, please commit the changes" && exit 1)
	@echo "Checking for golangci-lint..."
	@if ! which golangci-lint > /dev/null; then \
		echo "golangci-lint not found, installing v1.64.8..."; \
		go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.8; \
	fi
	@echo "Running golangci-lint..."
	@golangci-lint run
	@echo "Linting completed successfully"
