- Implement exclude patterns with anchored pattern support: - Patterns starting with / only match from root of source dir - Unanchored patterns match anywhere in path - Support for glob patterns (*.log, .*, **/*.pack) - Directory patterns skip entire subtrees - Add gobwas/glob dependency for pattern matching - Add 16 comprehensive tests for exclude functionality - Add snapshot prune command to clean orphaned data: - Removes incomplete snapshots from database - Cleans orphaned files, chunks, and blobs - Runs automatically at backup start for consistency - Add snapshot remove command for deleting snapshots - Add VAULTIK_AGE_SECRET_KEY environment variable support - Fix duplicate fx module provider in restore command - Change snapshot ID format to hostname_YYYY-MM-DDTHH:MM:SSZ
67 lines
1.5 KiB
Makefile
67 lines
1.5 KiB
Makefile
.PHONY: test fmt lint build clean all
|
|
|
|
# Version number
|
|
VERSION := 0.0.1
|
|
|
|
# Build variables
|
|
GIT_REVISION := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown")
|
|
|
|
# Linker flags
|
|
LDFLAGS := -X 'git.eeqj.de/sneak/vaultik/internal/globals.Version=$(VERSION)' \
|
|
-X 'git.eeqj.de/sneak/vaultik/internal/globals.Commit=$(GIT_REVISION)'
|
|
|
|
# Default target
|
|
all: test
|
|
|
|
# Run tests
|
|
test: lint fmt-check
|
|
@echo "Running tests..."
|
|
@if ! go test -v -timeout 10s ./... 2>&1; then \
|
|
echo ""; \
|
|
echo "TEST FAILURES DETECTED"; \
|
|
echo "Run 'go test -v ./internal/database' to see database test details"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# Check if code is formatted
|
|
fmt-check:
|
|
@if [ -n "$$(go fmt ./...)" ]; then \
|
|
echo "Error: Code is not formatted. Run 'make fmt' to fix."; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# Format code
|
|
fmt:
|
|
go fmt ./...
|
|
|
|
# Run linter
|
|
lint:
|
|
golangci-lint run
|
|
|
|
# Build binary
|
|
build:
|
|
go build -ldflags "$(LDFLAGS)" -o vaultik ./cmd/vaultik
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
rm -f vaultik
|
|
go clean
|
|
|
|
# Install dependencies
|
|
deps:
|
|
go mod download
|
|
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
|
|
|
# Run tests with coverage
|
|
test-coverage:
|
|
go test -v -coverprofile=coverage.out ./...
|
|
go tool cover -html=coverage.out -o coverage.html
|
|
|
|
# Run integration tests
|
|
test-integration:
|
|
go test -v -tags=integration ./...
|
|
|
|
local:
|
|
VAULTIK_CONFIG=$(HOME)/etc/vaultik/config.yml ./vaultik snapshot --debug list 2>&1
|
|
VAULTIK_CONFIG=$(HOME)/etc/vaultik/config.yml ./vaultik snapshot --debug create 2>&1
|