export GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") export BUILD_TIME := $(shell date "+%H:%M:%S %d.%m.%Y") # Проверка наличия golangci-lint GO_LINT := $(shell command -v golangci-lint 2>/dev/null) # Цель: запуск всех проверок кода check: @echo "🔍 Running code checks..." @go mod tidy -v @go vet ./... @if [ -n "$(GO_LINT)" ]; then \ echo "✅ golangci-lint found, running..." && \ golangci-lint run --timeout=5m --verbose; \ else \ echo "⚠️ golangci-lint not installed. Install with: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.57.2"; \ fi @go test -race -v ./... 2>/dev/null || echo "⚠️ Tests skipped or failed (run manually with 'go test -race ./...')" # Цель: сборка и пуш образа (зависимит от check) build: check @echo "🏗️ Building commit $(GIT_COMMIT)" @echo "⏰ Build time $(BUILD_TIME)" docker buildx build --build-arg GIT_COMMIT="$(GIT_COMMIT)" --build-arg BUILD_TIME="$(BUILD_TIME)" -t git.nix13.pw/scuroneko/yaemikobot:dev --file ./Dockerfile . docker push git.nix13.pw/scuroneko/yaemikobot:dev # Дополнительно: чистка clean: @echo "🧹 Cleaning..." @go clean -modcache -cache -i .PHONY: check build clean