- Add pure Go SQLite driver (modernc.org/sqlite) to avoid CGO dependency - Implement database connection management with WAL mode - Add write mutex for serializing concurrent writes - Create schema for all tables matching DESIGN.md specifications - Implement repository pattern for all database entities: - Files, FileChunks, Chunks, Blobs, BlobChunks, ChunkFiles, Snapshots - Add transaction support with proper rollback handling - Add fatal error handling for database integrity issues - Add snapshot fields for tracking file sizes and compression ratios - Make index path configurable via VAULTIK_INDEX_PATH environment variable - Add comprehensive test coverage for all repositories - Add format check to Makefile to ensure code formatting
54 lines
1.1 KiB
Makefile
54 lines
1.1 KiB
Makefile
.PHONY: test fmt lint build clean all
|
|
|
|
# Build variables
|
|
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
COMMIT := $(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=$(COMMIT)'
|
|
|
|
# Default target
|
|
all: test
|
|
|
|
# Run tests
|
|
test: lint fmt-check
|
|
go test -v ./...
|
|
|
|
# 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 ./...
|