You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							165 lines
						
					
					
						
							4.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							165 lines
						
					
					
						
							4.8 KiB
						
					
					
				| # 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) 
 |