| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- # SeaweedFS Admin Component Makefile
- # Variables
- ADMIN_DIR := .
- VIEW_DIR := $(ADMIN_DIR)/view
- STATIC_DIR := $(ADMIN_DIR)/static
- TEMPL_FILES := $(shell find $(VIEW_DIR) -name "*.templ")
- TEMPL_GO_FILES := $(TEMPL_FILES:.templ=_templ.go)
- GO_FILES := $(shell find $(ADMIN_DIR) -name "*.go" -not -name "*_templ.go")
- BUILD_DIR := ../..
- WEED_BINARY := $(BUILD_DIR)/weed
- # Default target
- .PHONY: all
- all: build
- # Install templ if not present
- .PHONY: install-templ
- install-templ:
- @which templ > /dev/null || (echo "Installing templ..." && go install github.com/a-h/templ/cmd/templ@latest)
- # Generate templ files
- .PHONY: generate
- generate: install-templ
- @echo "Generating templ files..."
- @templ generate
- @echo "Generated: $(TEMPL_GO_FILES)"
- # Clean generated files
- .PHONY: clean-templ
- clean-templ:
- @echo "Cleaning generated templ files..."
- @find $(VIEW_DIR) -name "*_templ.go" -delete
- @echo "Cleaned templ files"
- # Watch for changes and regenerate
- .PHONY: watch
- watch: install-templ
- @echo "Watching for templ file changes..."
- @templ generate --watch
- # Build the main weed binary with admin component
- .PHONY: build
- build: generate
- @echo "Building weed binary with admin component..."
- @cd $(BUILD_DIR) && go build -o weed ./weed
- @echo "Built: $(BUILD_DIR)/weed"
- # Test the admin component
- .PHONY: test
- test: generate
- @echo "Running admin component tests..."
- @go test ./...
- # Run the admin server via weed command
- .PHONY: run
- run: build
- @echo "Starting admin server via weed command..."
- @cd $(BUILD_DIR) && ./weed admin
- # Development server with auto-reload
- .PHONY: dev
- dev: generate
- @echo "Starting development server with auto-reload..."
- @echo "Note: You'll need to manually restart the server when Go files change"
- @cd $(BUILD_DIR) && ./weed admin -port=23647 &
- @$(MAKE) watch
- # Lint the code
- .PHONY: lint
- lint:
- @echo "Linting admin component..."
- @golangci-lint run ./...
- # Format the code
- .PHONY: fmt
- fmt:
- @echo "Formatting Go code..."
- @go fmt ./...
- @echo "Formatting templ files..."
- @templ fmt $(VIEW_DIR)
- # Validate static files exist
- .PHONY: validate-static
- validate-static:
- @echo "Validating static files..."
- @test -f $(STATIC_DIR)/css/admin.css || (echo "Missing: admin.css" && exit 1)
- @test -f $(STATIC_DIR)/js/admin.js || (echo "Missing: admin.js" && exit 1)
- @echo "Static files validated"
- # Check dependencies
- .PHONY: deps
- deps:
- @echo "Checking dependencies..."
- @go mod tidy
- @go mod verify
- # Clean all build artifacts
- .PHONY: clean
- clean: clean-templ
- @echo "Cleaning build artifacts..."
- @rm -f $(BUILD_DIR)/weed 2>/dev/null || true
- @echo "Cleaned build artifacts"
- # Install dependencies
- .PHONY: install-deps
- install-deps:
- @echo "Installing Go dependencies..."
- @go mod download
- @$(MAKE) install-templ
- # Production build
- .PHONY: build-prod
- build-prod: clean generate validate-static
- @echo "Building production binary..."
- @cd $(BUILD_DIR) && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o weed-linux-amd64 ./weed
- @echo "Built production binary: $(BUILD_DIR)/weed-linux-amd64"
- # Docker build (if needed)
- .PHONY: docker-build
- docker-build: generate
- @echo "Building Docker image with admin component..."
- @cd $(BUILD_DIR) && docker build -t seaweedfs/seaweedfs:latest .
- # Help target
- .PHONY: help
- help:
- @echo "SeaweedFS Admin Component Makefile"
- @echo ""
- @echo "Available targets:"
- @echo " all - Build the weed binary with admin component (default)"
- @echo " generate - Generate templ files from templates"
- @echo " build - Build weed binary with admin component"
- @echo " build-prod - Build production binary"
- @echo " run - Run admin server via weed command"
- @echo " dev - Start development server with template watching"
- @echo " test - Run tests"
- @echo " watch - Watch for template changes and regenerate"
- @echo " clean - Clean all build artifacts"
- @echo " clean-templ - Clean generated template files"
- @echo " fmt - Format Go and templ code"
- @echo " lint - Lint the code"
- @echo " deps - Check and tidy dependencies"
- @echo " install-deps - Install all dependencies"
- @echo " install-templ - Install templ compiler"
- @echo " validate-static - Validate static files exist"
- @echo " docker-build - Build Docker image"
- @echo " help - Show this help message"
- @echo ""
- @echo "Examples:"
- @echo " make generate # Generate templates"
- @echo " make build # Build weed binary"
- @echo " make run # Start admin server"
- @echo " make dev # Development mode with auto-reload"
- # Make sure generated files are up to date before building
- $(WEED_BINARY): $(TEMPL_GO_FILES) $(GO_FILES)
- @$(MAKE) build
- # Auto-generate templ files when .templ files change
- %_templ.go: %.templ
- @echo "Regenerating $@ from $<"
- @templ generate
- .PHONY: $(TEMPL_GO_FILES)
|