Files
Devour/Makefile
T
Tomas Dvorak 55885a0e8f first commit
2026-02-22 10:42:17 +01:00

85 lines
1.8 KiB
Makefile

.PHONY: build test lint clean install run docker
# Binary name
BINARY=devour
MAIN_PATH=./cmd/devour
# Go parameters
GOCMD=go
GOBUILD=$(GOCMD) build
GOCLEAN=$(GOCMD) clean
GOTEST=$(GOCMD) test
GOGET=$(GOCMD) get
GOMOD=$(GOCMD) mod
# Build flags
VERSION=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
BUILD_TIME=$(shell date -u '+%Y-%m-%d_%H:%M:%S')
LDFLAGS=-ldflags "-s -w -X main.Version=$(VERSION) -X main.BuildTime=$(BUILD_TIME)"
# Default target
all: clean build
## build: Build the binary
build:
$(GOBUILD) $(LDFLAGS) -o $(BINARY) $(MAIN_PATH)
## build-prod: Build optimized production binary
build-prod:
CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o $(BINARY) $(MAIN_PATH)
## test: Run tests
test:
$(GOTEST) -v ./...
## test-coverage: Run tests with coverage
test-coverage:
$(GOTEST) -coverprofile=coverage.out ./...
$(GOCMD) tool cover -html=coverage.out -o coverage.html
## lint: Run linter
lint:
@which golangci-lint > /dev/null || go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
golangci-lint run ./...
## fmt: Format code
fmt:
$(GOCMD) fmt ./...
## clean: Clean build artifacts
clean:
$(GOCLEAN)
rm -f $(BINARY)
rm -f coverage.out coverage.html
## install: Install binary to GOPATH/bin
install:
$(GOCMD) install $(MAIN_PATH)
## run: Run the application
run:
$(GOCMD) run $(MAIN_PATH)
## deps: Download dependencies
deps:
$(GOMOD) download
$(GOMOD) tidy
## docker: Build Docker image
docker:
docker build -t devour:latest .
## docker-run: Run Docker container
docker-run:
docker run -it --rm \
-e OPENAI_API_KEY=$(OPENAI_API_KEY) \
-v $(PWD)/devour_data:/app/devour_data \
devour:latest
## help: Show this help
help:
@echo 'Usage: make [target]'
@echo ''
@echo 'Targets:'
@sed -n 's/^##//p' $(MAKEFILE_LIST) | column -t -s ':'