Files
RCS/Makefile
T
Squid 5a0e2e630b Add self-hosted RCS backend, extension, and ops tooling
Ship the Go/SQLite API and Web UI, Chrome/Brave capture addon,
Docker Compose, Pangolin reverse-proxy support, and a user-crontab
watchdog so the binary stays running without systemd.
2026-08-06 22:02:45 +02:00

64 lines
1.9 KiB
Makefile

.PHONY: backend build tidy test-api clean prune-dev-data install-cron uninstall-cron
REPO_ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
WATCHDOG := $(REPO_ROOT)/scripts/rcs-watchdog.sh
CRON_MARK := \# RCS watchdog
CRON_LINE := * * * * * $(WATCHDOG)
# Run the backend from the repo root (data/ next to Makefile).
backend:
cd backend && RCS_DATA_DIR=../data RCS_ADDR=127.0.0.1:8080 go run ./cmd/rcs
build:
cd backend && go build -o ../bin/rcs ./cmd/rcs
tidy:
cd backend && go mod tidy
test-api:
curl -sS http://127.0.0.1:8080/api/health | tee /dev/stderr | grep -q '"ok":true'
# Remove local seed/test SQLite rows; keep real Reddit captures.
prune-dev-data:
bash scripts/prune-dev-data.sh
# Install a user crontab entry that runs the watchdog every minute.
install-cron: build
@mkdir -p "$(REPO_ROOT)/data"
@test -f "$(REPO_ROOT)/data/rcs.env" || cp "$(REPO_ROOT)/data/rcs.env.example" "$(REPO_ROOT)/data/rcs.env"
@chmod +x "$(WATCHDOG)"
@tmp="$$(mktemp)"; \
(crontab -l 2>/dev/null || true) > "$$tmp"; \
if grep -Fq "$(CRON_MARK)" "$$tmp"; then \
echo "crontab already has RCS watchdog entry"; \
else \
printf '%s\n%s\n' "$(CRON_MARK)" "$(CRON_LINE)" >> "$$tmp"; \
crontab "$$tmp"; \
echo "installed: $(CRON_LINE)"; \
fi; \
rm -f "$$tmp"
# Remove the RCS watchdog block from the user crontab.
uninstall-cron:
@tmp="$$(mktemp)"; \
(crontab -l 2>/dev/null || true) > "$$tmp"; \
if ! grep -Fq "$(CRON_MARK)" "$$tmp"; then \
echo "no RCS watchdog crontab entry"; \
rm -f "$$tmp"; \
exit 0; \
fi; \
awk -v mark="$(CRON_MARK)" -v line="$(CRON_LINE)" '\
$$0 == mark { skip=1; next } \
skip && $$0 == line { skip=0; next } \
skip { skip=0 } \
{ print }' "$$tmp" > "$$tmp.out"; \
crontab "$$tmp.out"; \
rm -f "$$tmp" "$$tmp.out"; \
echo "removed RCS watchdog crontab entry"
clean:
rm -rf bin/ data/*.db data/*.db-* data/screenshots/*
# keep screenshots/.gitkeep
mkdir -p data/screenshots
touch data/screenshots/.gitkeep