prism/Makefile

78 lines
No EOL
1.9 KiB
Makefile

.PHONY: all build build-linux run dev fmt lint vet clean install-tools deps docker-build docker-run docker-down release
BINARY_NAME=prism
VERSION?=$(shell cat VERSION 2>/dev/null || echo "dev")
COMMIT?=$(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
GOBIN?=$(shell command -v go >/dev/null 2>&1 && go env GOPATH || echo "${HOME}/go")/bin
export PATH := $(GOBIN):$(PATH)
all: fmt lint build
build:
go build -ldflags="-s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT)" -o $(BINARY_NAME) .
start: build
./$(BINARY_NAME)
dev:
@which air > /dev/null || (echo "Installing air..." && go install github.com/air-verse/air@latest)
air
fmt:
gofmt -s -w .
goimports -w .
lint:
golangci-lint run
fix:
golangci-lint run --fix
vet:
go vet ./...
clean:
rm -f $(BINARY_NAME) $(BINARY_NAME)-*
rm -rf data/
install-tools:
@echo "Installing Go tools to $(GOBIN)..."
go install golang.org/x/tools/cmd/goimports@latest
curl -sSfL https://golangci-lint.run/install.sh | sh -s -- -b $(shell go env GOPATH)/bin v2.8.0
deps:
go mod download
go mod tidy
check-updates:
@go list -u -m all | grep -v "indirect" | grep "=>" || echo "All dependencies are up to date"
docker-build:
docker build -t prism:$(VERSION) .
docker-up:
docker compose -f docker-compose.dev.yml up -d
docker-down:
docker compose -f docker-compose.dev.yml down
docker-up-proton:
docker compose -f docker-compose.dev.yml up -d protonmail-bridge
docker-up-signal:
docker compose -f docker-compose.dev.yml up -d signal-cli
release:
@if [ ! -f VERSION ]; then \
echo "Error: VERSION file not found"; \
exit 1; \
fi
@VERSION=$$(cat VERSION); \
echo "Releasing v$$VERSION..."; \
git tag -a "v$$VERSION" -m "Release v$$VERSION"; \
git push origin "v$$VERSION"; \
gh workflow run release.yml
release-signal:
@echo "Triggering signal-cli image release via GitHub Actions..."
gh workflow run release-signal-cli.yml