File: Makefile

package info (click to toggle)
golang-github-nicholas-fedor-shoutrrr 0.12.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,680 kB
  • sloc: sh: 74; makefile: 58
file content (108 lines) | stat: -rw-r--r-- 3,304 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Shoutrrr Makefile
# Comprehensive build, test, and deployment targets for the Shoutrrr project

# Variables
BINARY_NAME=shoutrrr
GO=go
DOCKER=docker
GORELEASER=goreleaser
GOLANGCI_LINT=golangci-lint-v2

# Default target
help: ## Show this help message
	@echo "Shoutrrr Project Makefile"
	@echo ""
	@echo "Available targets:"
	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "  %-15s %s\n", $$1, $$2}' $(MAKEFILE_LIST)

# =============================================================================
# Development Targets
# =============================================================================

.PHONY: build test lint vet run setup install

build: ## Build the application binary
	$(GO) build -o bin/$(BINARY_NAME) ./...

test: ## Run all tests
	$(GO) test -timeout 30s -v -coverprofile coverage.out -covermode atomic ./...

lint: ## Run linter and fix issues
	$(GOLANGCI_LINT) run --fix --config build/golangci-lint/golangci.yaml ./...

vet: ## Run Go vet
	$(GO) vet ./...

fmt: ## Run formatter
	$(GOLANGCI_LINT) fmt --config build/golangci-lint/golangci.yaml ./...

run: ## Run the application
	$(GO) run ./...

install: ## Install the application
	$(GO) install ./...

# =============================================================================
# Dependency Management
# =============================================================================

.PHONY: mod-tidy mod-download

mod-tidy: ## Tidy and clean up Go modules
	$(GO) mod tidy

mod-download: ## Download Go module dependencies
	$(GO) mod download

# =============================================================================
# Documentation Targets
# =============================================================================

.PHONY: docs docs-setup docs-build docs-serve

docs: docs-setup docs-serve ## Build and serve documentation site for local development

docs-setup: ## Install Mkdocs dependencies
	cd build/mkdocs && pip install -r docs-requirements.txt

docs-gen: ## Generate service configuration documentation
	bash ./scripts/generate-service-config-docs.sh

docs-build: ## Build Mkdocs documentation site
	cd docs && mike build --config ../build/mkdocs/mkdocs.yaml

docs-serve: ## Serve Mkdocs documentation site locally
	cd docs && mike serve --config ../build/mkdocs/mkdocs.yaml --dev-addr localhost:3000

# =============================================================================
# Release Targets
# =============================================================================

.PHONY: release

release: ## Create a new release using GoReleaser
	$(GORELEASER) release --clean

# =============================================================================
# Docker Targets
# =============================================================================

.PHONY: docker-build docker-run docker-push

docker-build: ## Build Docker image
	$(DOCKER) build -t $(BINARY_NAME) .

docker-run: ## Run Docker container
	$(DOCKER) run -p 8080:8080 $(BINARY_NAME)

docker-push: ## Push Docker image (requires proper tagging)
	$(DOCKER) push $(BINARY_NAME)

# =============================================================================
# Utility Targets
# =============================================================================

.PHONY: clean

clean: ## Clean build artifacts
	rm -rf bin/