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.
64 lines
1.9 KiB
Makefile
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
|