-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
134 lines (113 loc) · 4.09 KB
/
Copy pathMakefile
File metadata and controls
134 lines (113 loc) · 4.09 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
all: run
# Install dependencies
deps:
go mod tidy
# Generate Swagger/OpenAPI docs
swag:
swag init -g main.go -d ./cmd/guac,./api
# Install git hooks using lefthook
hooks:
@echo "Installing git hooks using lefthook..."
@if ! command -v lefthook &> /dev/null; then \
echo "lefthook command not found. Please install lefthook: https://github.com/evilmartians/lefthook"; \
exit 1; \
fi
@lefthook install
@echo "Lefthook Git hooks installed successfully"
# Run pre-commit checks on all files using lefthook
lint-all:
@echo "Running pre-commit checks on all files using lefthook..."
@lefthook run pre-commit --all-files
@echo "Pre-commit checks completed"
# Run pre-commit checks on staged files only using lefthook
lint:
@echo "Running pre-commit checks on staged files using lefthook..."
@lefthook run pre-commit --files $(git diff --name-only --cached)
# run the server
run: deps
@echo "Running server..."
@echo "Starting server..."
go run cmd/guac/main.go
run_frontend:
@echo "Running frontend..."
@echo "Starting frontend..."
bun --dir frontend run dev
generate:
bash ./certs/generate.sh
# generate lets encrypt
generate_prod:
sudo certbot certonly --standalone -d $(DOMAIN) --email $(EMAIL) --agree-tos --non-interactive
@echo "Certs generated in /etc/letsencrypt/live/$(DOMAIN)/"
@echo "Copying certs to certs directory..."
sudo cp /etc/letsencrypt/live/$(DOMAIN)/fullchain.pem certs/prod/certificate.crt
sudo cp /etc/letsencrypt/live/$(DOMAIN)/privkey.pem certs/prod/private.key
test:
go test -race -v .
test_coverage:
go test -race -coverprofile=coverage.out -v .
go tool cover -html=coverage.out
build: deps
go build -v -o guac cmd/guac/main.go
# MkDocs documentation targets
docs-setup:
pip install mkdocs mkdocs-material
docs-serve:
mkdocs serve
docs-build:
mkdocs build
# Setup development environment
setup: deps hooks
@echo "Development environment setup complete"
KIND_CLUSTER ?= kubebrowse-cluster
ARCH := $(shell uname -m)
ifeq ($(ARCH),x86_64)
PLATFORM := linux/amd64
TAG_SUFFIX := amd64
else ifeq ($(ARCH),arm64)
PLATFORM := linux/arm64
TAG_SUFFIX := arm64
else
PLATFORM := linux/$(ARCH)
TAG_SUFFIX := $(ARCH)
endif
CHROMIUM_IMAGE := ghcr.io/browsersec/rdp-chromium:latest-$(TAG_SUFFIX)
OFFICE_IMAGE := ghcr.io/browsersec/rdp-onlyoffice-lxde:latest-$(TAG_SUFFIX)
# Load chromium image into KIND
load-chromium:
@echo "Pulling $(CHROMIUM_IMAGE)..."
docker pull --platform $(PLATFORM) $(CHROMIUM_IMAGE)
@echo "Loading $(CHROMIUM_IMAGE) into KIND cluster $(KIND_CLUSTER)..."
docker save $(CHROMIUM_IMAGE) -o /tmp/chromium.tar
kind load image-archive /tmp/chromium.tar --name $(KIND_CLUSTER)
@rm -f /tmp/chromium.tar
@echo "Chromium image loaded."
# Load onlyoffice image into KIND
load-office:
@echo "Pulling $(OFFICE_IMAGE)..."
docker pull --platform $(PLATFORM) $(OFFICE_IMAGE)
@echo "Loading $(OFFICE_IMAGE) into KIND cluster $(KIND_CLUSTER)..."
docker save $(OFFICE_IMAGE) -o /tmp/onlyoffice.tar
kind load image-archive /tmp/onlyoffice.tar --name $(KIND_CLUSTER)
@rm -f /tmp/onlyoffice.tar
@echo "Onlyoffice image loaded."
# Load all sandbox images into KIND
load-images: load-chromium load-office
help:
go run cmd/guac/main.go -h
@echo ""
@echo "Additional Make targets:"
@echo " deps - Install dependencies"
@echo " hooks - Install lefthook git hooks"
@echo " setup - Set up development environment (deps + hooks)"
@echo " lint - Run lefthook pre-commit checks on staged files"
@echo " lint-all - Run lefthook pre-commit checks on all files"
@echo " test - Run tests"
@echo " build - Build the project"
@echo " docs-setup - Install MkDocs and Material theme via pip"
@echo " docs-serve - Serve documentation locally"
@echo " docs-build - Build documentation into static files"
@echo " load-images - Pull all sandbox images from GHCR and load into KIND"
@echo " load-chromium - Pull and load chromium image into KIND"
@echo " load-office - Pull and load onlyoffice image into KIND"
@echo " generate - Generate self-signed certificates"
@echo " generate_prod - Generate Let's Encrypt certificates"