Add admin component (#6928)
* init version * relocate * add s3 bucket link * refactor handlers into weed/admin folder * fix login logout * adding favicon * remove fall back to http get topology * grpc dial option, disk total capacity * show filer count * fix each volume disk usage * add filers to dashboard * adding hosts, volumes, collections * refactor code and menu * remove "refresh" button * fix data for collections * rename cluster hosts into volume servers * add masters, filers * reorder * adding file browser * create folder and upload files * add filer version, created at time * remove mock data * remove fields * fix submenu item highlighting * fix bucket creation * purge files * delete multiple * fix bucket creation * remove region from buckets * add object store with buckets and users * rendering permission * refactor * get bucket objects and size * link to file browser * add file size and count for collections page * paginate the volumes * fix possible SSRF https://github.com/seaweedfs/seaweedfs/pull/6928/checks?check_run_id=45108469801 * Update weed/command/admin.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update weed/command/admin.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix build * import * remove filer CLI option * remove filer option * remove CLI options --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
165
weed/admin/Makefile
Normal file
165
weed/admin/Makefile
Normal file
@@ -0,0 +1,165 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user