mirror of
https://github.com/Dvorinka/Devour.git
synced 2026-06-03 20:13:03 +00:00
85 lines
1.8 KiB
Makefile
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 ':'
|