Add Strix camera discovery system with comprehensive database
This commit adds the complete Strix IP camera stream discovery system: - Go-based API server with SSE support for real-time updates - 3,600+ camera brand database with stream URL patterns - Intelligent fuzzy search across camera models - ONVIF discovery and stream validation - RESTful API with health check, camera search, and stream discovery - Makefile for building and deployment - Comprehensive README documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,147 @@
|
||||
.PHONY: all build clean run test install deps fmt vet lint
|
||||
|
||||
# Variables
|
||||
BINARY_NAME=strix
|
||||
BINARY_PATH=bin/$(BINARY_NAME)
|
||||
MAIN_PATH=cmd/strix/main.go
|
||||
GO=go
|
||||
GOFLAGS=-v
|
||||
LDFLAGS=-ldflags "-s -w -X main.Version=$$(git describe --tags --always --dirty 2>/dev/null || echo 'dev')"
|
||||
|
||||
# Default target
|
||||
all: build
|
||||
|
||||
# Build the application
|
||||
build:
|
||||
@echo "Building $(BINARY_NAME)..."
|
||||
@mkdir -p bin
|
||||
$(GO) build $(GOFLAGS) $(LDFLAGS) -o $(BINARY_PATH) $(MAIN_PATH)
|
||||
@echo "Build complete: $(BINARY_PATH)"
|
||||
|
||||
# Run the application
|
||||
run: build
|
||||
@echo "Running $(BINARY_NAME)..."
|
||||
./$(BINARY_PATH)
|
||||
|
||||
# Clean build artifacts
|
||||
clean:
|
||||
@echo "Cleaning..."
|
||||
@rm -rf bin/
|
||||
@$(GO) clean
|
||||
@echo "Clean complete"
|
||||
|
||||
# Install dependencies
|
||||
deps:
|
||||
@echo "Installing dependencies..."
|
||||
$(GO) mod download
|
||||
$(GO) mod tidy
|
||||
@echo "Dependencies installed"
|
||||
|
||||
# Format code
|
||||
fmt:
|
||||
@echo "Formatting code..."
|
||||
$(GO) fmt ./...
|
||||
@echo "Code formatted"
|
||||
|
||||
# Run vet
|
||||
vet:
|
||||
@echo "Running go vet..."
|
||||
$(GO) vet ./...
|
||||
@echo "Vet complete"
|
||||
|
||||
# Run linter (requires golangci-lint)
|
||||
lint:
|
||||
@echo "Running linter..."
|
||||
@if command -v golangci-lint > /dev/null; then \
|
||||
golangci-lint run ./...; \
|
||||
else \
|
||||
echo "golangci-lint not installed, skipping..."; \
|
||||
fi
|
||||
|
||||
# Run tests
|
||||
test:
|
||||
@echo "Running tests..."
|
||||
$(GO) test -v -race -cover ./...
|
||||
@echo "Tests complete"
|
||||
|
||||
# Run tests with coverage
|
||||
test-coverage:
|
||||
@echo "Running tests with coverage..."
|
||||
$(GO) test -v -race -coverprofile=coverage.out ./...
|
||||
$(GO) tool cover -html=coverage.out -o coverage.html
|
||||
@echo "Coverage report generated: coverage.html"
|
||||
|
||||
# Build for multiple platforms
|
||||
build-all:
|
||||
@echo "Building for multiple platforms..."
|
||||
@mkdir -p bin
|
||||
|
||||
@echo "Building for Linux amd64..."
|
||||
GOOS=linux GOARCH=amd64 $(GO) build $(GOFLAGS) $(LDFLAGS) -o bin/$(BINARY_NAME)-linux-amd64 $(MAIN_PATH)
|
||||
|
||||
@echo "Building for Linux arm64..."
|
||||
GOOS=linux GOARCH=arm64 $(GO) build $(GOFLAGS) $(LDFLAGS) -o bin/$(BINARY_NAME)-linux-arm64 $(MAIN_PATH)
|
||||
|
||||
@echo "Building for Darwin amd64..."
|
||||
GOOS=darwin GOARCH=amd64 $(GO) build $(GOFLAGS) $(LDFLAGS) -o bin/$(BINARY_NAME)-darwin-amd64 $(MAIN_PATH)
|
||||
|
||||
@echo "Building for Darwin arm64..."
|
||||
GOOS=darwin GOARCH=arm64 $(GO) build $(GOFLAGS) $(LDFLAGS) -o bin/$(BINARY_NAME)-darwin-arm64 $(MAIN_PATH)
|
||||
|
||||
@echo "Building for Windows amd64..."
|
||||
GOOS=windows GOARCH=amd64 $(GO) build $(GOFLAGS) $(LDFLAGS) -o bin/$(BINARY_NAME)-windows-amd64.exe $(MAIN_PATH)
|
||||
|
||||
@echo "Multi-platform build complete"
|
||||
|
||||
# Install the binary to GOPATH
|
||||
install: build
|
||||
@echo "Installing $(BINARY_NAME)..."
|
||||
$(GO) install $(GOFLAGS) $(LDFLAGS) $(MAIN_PATH)
|
||||
@echo "Installation complete"
|
||||
|
||||
# Development mode with live reload (requires air)
|
||||
dev:
|
||||
@if command -v air > /dev/null; then \
|
||||
air; \
|
||||
else \
|
||||
echo "Air not installed. Install with: go install github.com/air-verse/air@latest"; \
|
||||
echo "Running without live reload..."; \
|
||||
$(MAKE) run; \
|
||||
fi
|
||||
|
||||
# Docker build
|
||||
docker-build:
|
||||
@echo "Building Docker image..."
|
||||
docker build -t strix:latest .
|
||||
@echo "Docker image built: strix:latest"
|
||||
|
||||
# Docker run
|
||||
docker-run:
|
||||
@echo "Running Docker container..."
|
||||
docker run -p 8080:8080 -v $(PWD)/data:/data strix:latest
|
||||
|
||||
# Check code quality
|
||||
check: fmt vet lint test
|
||||
@echo "Code quality check complete"
|
||||
|
||||
# Help
|
||||
help:
|
||||
@echo "Strix - Smart IP Camera Stream Discovery System"
|
||||
@echo ""
|
||||
@echo "Available targets:"
|
||||
@echo " make build - Build the application"
|
||||
@echo " make run - Build and run the application"
|
||||
@echo " make clean - Remove build artifacts"
|
||||
@echo " make deps - Install dependencies"
|
||||
@echo " make fmt - Format code"
|
||||
@echo " make vet - Run go vet"
|
||||
@echo " make lint - Run linter"
|
||||
@echo " make test - Run tests"
|
||||
@echo " make test-coverage - Run tests with coverage"
|
||||
@echo " make build-all - Build for multiple platforms"
|
||||
@echo " make install - Install to GOPATH"
|
||||
@echo " make dev - Run in development mode with live reload"
|
||||
@echo " make docker-build - Build Docker image"
|
||||
@echo " make docker-run - Run Docker container"
|
||||
@echo " make check - Run all quality checks"
|
||||
@echo " make help - Show this help message"
|
||||
Reference in New Issue
Block a user