forked from gtsteffaniak/filebrowser
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
145 lines (120 loc) Β· 5.69 KB
/
makefile
File metadata and controls
145 lines (120 loc) Β· 5.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# Use bash on all platforms
# Windows users: Requires Git Bash (comes with Git for Windows: https://git-scm.com/download/win)
# Add C:\Program Files\Git\bin to your PATH, or run make from Git Bash terminal
ifeq ($(OS),Windows_NT)
SHELL := C:/Program Files/Git/bin/bash.exe
.SHELLFLAGS := -ec
else
SHELL := /bin/bash
endif
# git checkout remote branch PR
# git fetch origin pull/####/head:pr-####
.SILENT:
.PHONY: setup update build build-docker build-backend build-frontend dev run generate-docs
.PHONY: lint-frontend lint-backend lint test test-backend test-frontend check-all
.PHONY: check-translations sync-translations test-playwright run-proxy screenshots
setup:
echo "creating ./backend/test_config.yaml for local testing..."
if [ ! -f backend/test_config.yaml ]; then \
cp backend/config.yaml backend/test_config.yaml; \
fi
echo "installing backend tooling..."
cd backend && go get tool
cd backend/http && mkdir -p embed && touch embed/.gitignore
echo "installing npm requirements for frontend..."
cd frontend && npm i
update:
cd backend && go get -u ./... && go mod tidy
cd frontend && npm update
build: build-frontend build-backend
build-docker:
docker build --build-arg="VERSION=testing" --build-arg="REVISION=n/a" -t gtstef/filebrowser -f _docker/Dockerfile .
build-docker-slim:
docker build --build-arg="VERSION=testing" --build-arg="REVISION=n/a" -t gtstef/filebrowser -f _docker/Dockerfile.slim .
build-backend:
@echo "Building backend..."
cd backend && go build -o filebrowser --ldflags="-w -s -X 'github.com/gtsteffaniak/filebrowser/backend/common/version.CommitSHA=testingCommit' -X 'github.com/gtsteffaniak/filebrowser/backend/common/version.Version=testing'"
@echo "β Backend built successfully"
# New dev target with hot-reloading for frontend and backend
dev: generate-docs
@echo "Starting dev servers... Press Ctrl+C to stop."
@cd frontend && DEV_BUILD=true npm run watch & \
FRONTEND_PID=$$!; \
cd backend && export FILEBROWSER_DEVMODE=true && go tool air $$([ "$(OS)" = "Windows_NT" ] && echo "-c .air.windows.toml" || echo "") & \
BACKEND_PID=$$!; \
trap 'echo "Stopping..."; kill $$FRONTEND_PID $$BACKEND_PID 2>/dev/null; sleep 1; kill -9 $$FRONTEND_PID $$BACKEND_PID 2>/dev/null; exit 0' INT TERM; \
wait $$FRONTEND_PID $$BACKEND_PID 2>/dev/null || true
run: build-frontend generate-docs
cd backend && go tool swag init --output swagger/docs
@if [ "$$(uname)" = "Darwin" ]; then \
sed -i '' '/func init/,+3d' backend/swagger/docs/docs.go; \
else \
sed -i '/func init/,+3d' backend/swagger/docs/docs.go; \
fi
cd backend && CGO_ENABLED=1 FILEBROWSER_DEVMODE=true go run --tags=mupdf \
--ldflags="-w -s -X 'github.com/gtsteffaniak/filebrowser/backend/common/version.CommitSHA=testingCommit' -X 'github.com/gtsteffaniak/filebrowser/backend/common/version.Version=testing'" . -c test_config.yaml
generate-docs:
@echo "NOTE: Run 'make setup' if you haven't already."
@echo "Generating swagger docs..."
cd backend && go tool swag init --output swagger/docs
@if [ "$$(uname)" = "Darwin" ]; then \
sed -i '' '/func init/,+3d' backend/swagger/docs/docs.go; \
else \
sed -i '/func init/,+3d' backend/swagger/docs/docs.go; \
fi
@echo "Generating frontend config..."
cd backend && FILEBROWSER_GENERATE_CONFIG=true go run .
build-frontend:
@echo "Building frontend..."
cd frontend && npm run build
@echo "β Frontend built successfully"
lint-frontend:
cd frontend && npm run lint
lint-backend:
cd backend && go tool golangci-lint run --path-prefix=backend
lint: lint-backend lint-frontend
test: test-backend test-frontend
check-all: lint test check-translations
check-translations:
cd frontend && npm run i18n:check
sync-translations:
cd frontend && npm run i18n:sync
test-backend:
cd backend && go test -race -timeout=10s ./...
test-frontend:
cd frontend && npm run test
test-playwright: build-frontend
cd backend && GOOS=linux go build -o filebrowser .
docker build -t filebrowser-playwright-tests -f _docker/Dockerfile.playwright-settings .
docker build -t filebrowser-playwright-tests -f _docker/Dockerfile.playwright-noauth .
docker build -t filebrowser-playwright-tests -f _docker/Dockerfile.playwright-no-config .
docker build -t filebrowser-playwright-tests -f _docker/Dockerfile.playwright-general .
docker build -t filebrowser-playwright-tests -f _docker/Dockerfile.playwright-sharing .
docker build -t filebrowser-playwright-tests -f _docker/Dockerfile.playwright-proxy .
docker build -t filebrowser-playwright-tests -f _docker/Dockerfile.playwright-oidc .
run-proxy: build-frontend
cd _docker && docker compose up -d --build
screenshots: build-frontend build-backend
# copy the playwright-files directory so you don't edit the original
cd frontend && rm -rf playwright-files || true && cp -r tests/playwright-files .
# Kill any existing backend processes
@echo "Killing any existing backend processes..."
@pkill -f "go run ." || true
@pkill -f "filebrowser" || true
@pkill -f "backend" || true
@lsof -ti:8080 | xargs kill -9 2>/dev/null || true
@echo "Starting backend server..."
@trap 'echo "Stopping backend server..."; pkill -f "go run ." || true; pkill -f "filebrowser" || true; pkill -f "backend" || true; lsof -ti:8080 | xargs kill -9 2>/dev/null || true; exit 0' INT TERM
rm -rf backend/playwright-files.db || true
cd backend && go run . -c playwright-config.yaml &
BACKEND_PID=$$!; \
sleep 2; \
echo "Running dark screenshots..."; \
cd frontend && npx playwright test --project dark-screenshots; \
echo "Running light screenshots..."; \
npx playwright test --project light-screenshots; \
echo "Cleaning up..."; \
kill $$BACKEND_PID 2>/dev/null || true; \
pkill -f "go run ." || true; \
pkill -f "filebrowser" || true; \
lsof -ti:8080 | xargs kill -9 2>/dev/null || true