# Makefile for Secret Manager - Simple Go CLI Tool

# Configuration
BINARY_NAME = secret

default: build

# Simple build (no code signing needed)
build: clean
	@echo "Building secret manager..."
	go build -o $(BINARY_NAME) cmd/secret/main.go
	@echo "Build complete: ./$(BINARY_NAME)"

# Build with verbose output
build-verbose: clean
	@echo "Building with verbose output..."
	go build -v -o $(BINARY_NAME) cmd/secret/main.go
	@echo "Build complete: ./$(BINARY_NAME)"

# Vet the code
vet:
	@echo "Running go vet..."
	go vet ./...

# Test with linting and vetting
test: vet lint
	@echo "Running go tests..."
	go test -v ./...

# Run comprehensive test script
test-comprehensive: build
	@echo "Running comprehensive test script..."
	@chmod +x test_secret_manager.sh
	@./test_secret_manager.sh

# Run all tests (unit tests + comprehensive tests)
test-all: test test-comprehensive

# Lint the code
lint:
	@echo "Running linter..."
	golangci-lint run --timeout 5m

# Check all code quality (build + vet + lint + unit tests)
check: build vet lint test

# Clean build artifacts
clean:
	rm -f ./$(BINARY_NAME)

# Install to /usr/local/bin
install: build
	@echo "Installing to /usr/local/bin..."
	sudo cp $(BINARY_NAME) /usr/local/bin/
	@echo "Installed to /usr/local/bin/$(BINARY_NAME)"

# Uninstall from /usr/local/bin
uninstall:
	@echo "Removing from /usr/local/bin..."
	sudo rm -f /usr/local/bin/$(BINARY_NAME)
	@echo "Uninstalled $(BINARY_NAME)"

# Test keychain functionality
test-keychain:
	@echo "Testing keychain functionality..."
	@./$(BINARY_NAME) --help > /dev/null 2>&1 && echo "Binary runs successfully" || echo "Binary failed to run"

# Help target
help:
	@echo "Secret Manager - Simple Go CLI Tool"
	@echo "===================================="
	@echo ""
	@echo "Available targets:"
	@echo "  build              - Build the secret manager (default)"
	@echo "  build-verbose      - Build with verbose output"
	@echo "  vet                - Run go vet"
	@echo "  lint               - Run linter only"
	@echo "  test               - Run unit tests with vet and lint"
	@echo "  test-comprehensive - Run comprehensive test script"
	@echo "  test-all           - Run both unit tests and comprehensive tests"
	@echo "  check              - Run all code quality checks"
	@echo "  clean              - Remove build artifacts"
	@echo "  install            - Install to /usr/local/bin"
	@echo "  uninstall          - Remove from /usr/local/bin"
	@echo "  test-keychain      - Test basic functionality"
	@echo "  help               - Show this help"
	@echo ""
	@echo "Usage:"
	@echo "  make build && ./secret --help"
	@echo "  make test-all      # Run all tests"
	@echo "  make check         # Run all quality checks"

.PHONY: default build build-verbose vet test test-comprehensive test-all lint check clean install uninstall test-keychain help