diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-07-01 01:28:09 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-01 01:28:09 -0700 |
| commit | 1defee3d682d86c7e0cbc7db7ebdb9cae872a471 (patch) | |
| tree | dae266bee79c36a74214a47d3d9e9274b322d49d /weed/admin/Makefile | |
| parent | e5adc3872a79e062826a387e1e2bb68196f14014 (diff) | |
| download | seaweedfs-1defee3d682d86c7e0cbc7db7ebdb9cae872a471.tar.xz seaweedfs-1defee3d682d86c7e0cbc7db7ebdb9cae872a471.zip | |
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>
Diffstat (limited to 'weed/admin/Makefile')
| -rw-r--r-- | weed/admin/Makefile | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/weed/admin/Makefile b/weed/admin/Makefile new file mode 100644 index 000000000..b79ddc1ab --- /dev/null +++ b/weed/admin/Makefile @@ -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)
\ No newline at end of file |
