mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-30 06:16:37 +08:00
e0f2309520
- implement route whitelist registration and wildcard matching in RouterExtension - add cookie store session fallback when Redis is disabled in driver_http - actively register public auth endpoints to whitelist in auth plugin - update user handlers to persist session and clear cookie on logout - document router whitelist mechanism in AGENTS.md and new-api skill
152 lines
4.8 KiB
Makefile
152 lines
4.8 KiB
Makefile
.PHONY: swagger license license-check build-embedded build-test cross-build code-check format canary
|
||
|
||
VERSION ?= dev
|
||
BUILD_DATE ?= $(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
|
||
MODULE := $(shell cd backend && go list -m)
|
||
|
||
swagger:
|
||
scripts/swagger.sh
|
||
|
||
license:
|
||
scripts/update_go_license.sh
|
||
|
||
license-check:
|
||
scripts/update_go_license.sh --check
|
||
|
||
format:
|
||
@echo "==> Formatting backend Go source with golangci-lint fmt (gofumpt, same gate as code-check)..."
|
||
cd backend && golangci-lint fmt
|
||
@echo "==> Formatting frontend source..."
|
||
cd frontend && pnpm format
|
||
|
||
build-embedded:
|
||
@echo "==> Building embedded frontend version=$(VERSION) build_date=$(BUILD_DATE)..."
|
||
cd frontend && \
|
||
NEXT_PUBLIC_APP_VERSION="$(VERSION)" \
|
||
NEXT_PUBLIC_APP_BUILD_DATE="$(BUILD_DATE)" \
|
||
pnpm build:embed
|
||
rm -rf backend/plugins/drivers/driver_http/dist
|
||
cp -R frontend/out backend/plugins/drivers/driver_http/dist
|
||
test -f backend/plugins/drivers/driver_http/dist/index.html
|
||
cd backend && go build \
|
||
-tags embed_frontend \
|
||
-ldflags "-s -w -X '$(MODULE)/pkg/buildinfo.Version=$(VERSION)' -X '$(MODULE)/pkg/buildinfo.BuildTime=$(BUILD_DATE)'" \
|
||
-o ../bin/wavelet \
|
||
main.go
|
||
|
||
code-check:
|
||
@scripts/check_cordis_architecture.sh
|
||
cd backend && golangci-lint run
|
||
cd frontend && pnpm tsc --noEmit --jsx preserve && npx eslint . --max-warnings 0
|
||
|
||
build-backend:
|
||
@echo "==> Building backend version=$(VERSION) build_date=$(BUILD_DATE)..."
|
||
cd backend && go build \
|
||
-ldflags "-s -w -X '$(MODULE)/pkg/buildinfo.Version=$(VERSION)' -X '$(MODULE)/pkg/buildinfo.BuildTime=$(BUILD_DATE)'" \
|
||
-o ../bin/wavelet \
|
||
main.go
|
||
|
||
build-frontend:
|
||
@echo "==> Building frontend version=$(VERSION) build_date=$(BUILD_DATE)..."
|
||
cd frontend && \
|
||
NEXT_PUBLIC_APP_VERSION="$(VERSION)" \
|
||
NEXT_PUBLIC_APP_BUILD_DATE="$(BUILD_DATE)" \
|
||
pnpm build:embed
|
||
|
||
build-test:
|
||
@echo "==> Running frontend and backend build tests in parallel..."
|
||
@PIDS=""; \
|
||
STATUS=0; \
|
||
( cd frontend && pnpm build:embed 2>&1 | sed 's/^/[frontend] /' ) & PIDS="$$PIDS $$!"; \
|
||
( cd backend && go test ./... && go build -o /dev/null ./... 2>&1 | sed 's/^/[backend] /' ) & PIDS="$$PIDS $$!"; \
|
||
for PID in $$PIDS; do \
|
||
wait $$PID || STATUS=1; \
|
||
done; \
|
||
if [ $$STATUS -eq 0 ]; then \
|
||
echo "==> All build tests passed."; \
|
||
else \
|
||
echo "==> Build test FAILED." >&2; \
|
||
exit 1; \
|
||
fi
|
||
|
||
cross-build:
|
||
@echo "==> Cross-compiling \
|
||
$(if $(GOOS),$(GOOS),linux/darwin/windows) × \
|
||
$(if $(GOARCH),$(GOARCH),amd64/arm64) \
|
||
(version=$(or $(VERSION),dev))..."
|
||
@mkdir -p bin
|
||
docker build \
|
||
--file docker/Dockerfile.cross \
|
||
--target export \
|
||
--build-arg VERSION=$(or $(VERSION),dev) \
|
||
--build-arg BUILD_DATE="$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')" \
|
||
$(if $(GOOS),--build-arg TARGET_OS=$(GOOS)) \
|
||
$(if $(GOARCH),--build-arg TARGET_ARCH=$(GOARCH)) \
|
||
--output type=local,dest=./bin \
|
||
.
|
||
@echo "==> Done. Binaries written to ./bin/"
|
||
@ls -lh bin/
|
||
|
||
dev-f:
|
||
@echo "==> Starting frontend development server..."
|
||
cd frontend && pnpm dev
|
||
|
||
dev-b:
|
||
@echo "==> Starting backend development server..."
|
||
cd backend && go run main.go all
|
||
|
||
dev:
|
||
@echo "==> Starting frontend and backend development servers in parallel..."
|
||
@PIDS=""; \
|
||
STATUS=0; \
|
||
( cd frontend && pnpm dev 2>&1 | sed 's/^/[frontend] /' ) & PIDS="$$PIDS $$!"; \
|
||
( cd backend && go run main.go all 2>&1 | sed 's/^/[backend] /' ) & PIDS="$$PIDS $$!"; \
|
||
for PID in $$PIDS; do \
|
||
wait $$PID || STATUS=1; \
|
||
done; \
|
||
if [ $$STATUS -eq 0 ]; then \
|
||
echo "==> All development servers exited successfully."; \
|
||
else \
|
||
echo "==> Development servers exited with errors." >&2; \
|
||
exit 1; \
|
||
fi
|
||
|
||
|
||
# Merge the current local branch into canary, push canary, then restore it.
|
||
# Dirty worktrees are auto-stashed and restored after the operation.
|
||
canary:
|
||
@set -e; \
|
||
if ! git rev-parse --git-dir >/dev/null 2>&1; then \
|
||
echo "Error: not a git repository"; exit 1; \
|
||
fi; \
|
||
orig=$$(git rev-parse --abbrev-ref HEAD); \
|
||
if [ "$$orig" = "HEAD" ]; then \
|
||
echo "Error: detached HEAD; checkout a branch first"; exit 1; \
|
||
fi; \
|
||
if [ "$$orig" = "canary" ]; then \
|
||
echo "Error: already on canary; checkout a source branch first"; exit 1; \
|
||
fi; \
|
||
stashed=0; \
|
||
if [ -n "$$(git status --porcelain)" ]; then \
|
||
echo "Working tree is dirty; stashing local changes..."; \
|
||
git stash push -u -m "make canary auto-stash from $$orig"; \
|
||
stashed=1; \
|
||
fi; \
|
||
cleanup() { \
|
||
cur=$$(git rev-parse --abbrev-ref HEAD 2>/dev/null || true); \
|
||
if [ "$$cur" != "$$orig" ]; then \
|
||
echo "Restoring branch $$orig..."; \
|
||
git checkout -q "$$orig"; \
|
||
fi; \
|
||
if [ "$$stashed" = "1" ]; then \
|
||
echo "Restoring stashed local changes..."; \
|
||
git stash pop; \
|
||
fi; \
|
||
}; \
|
||
trap cleanup EXIT; \
|
||
echo "Merging $$orig -> canary..."; \
|
||
git checkout canary; \
|
||
git merge --no-edit "$$orig"; \
|
||
git push -u origin canary; \
|
||
echo "Done: $$orig merged into canary and pushed."
|