aboutsummaryrefslogtreecommitdiff
path: root/weed/admin/Makefile
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2025-07-01 01:28:09 -0700
committerGitHub <noreply@github.com>2025-07-01 01:28:09 -0700
commit1defee3d682d86c7e0cbc7db7ebdb9cae872a471 (patch)
treedae266bee79c36a74214a47d3d9e9274b322d49d /weed/admin/Makefile
parente5adc3872a79e062826a387e1e2bb68196f14014 (diff)
downloadseaweedfs-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/Makefile165
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