Files
org_web/Makefile
Zaine 3d87e3d1e8
All checks were successful
Build Org Website / build (push) Successful in 52s
fix 3
2026-05-07 15:52:36 +01:00

114 lines
3.9 KiB
Makefile
Executable File

.PHONY: all clean norm author author-stop author-restart author-status help
VENV := .venv
PY := $(VENV)/bin/python
PIP := $(VENV)/bin/pip
PERM_DIR := /home/zaine/master-folder/projects/scripts/bash-scripts
AUTHOR_PORT := 8765
AUTHOR_URL := http://127.0.0.1:$(AUTHOR_PORT)
AUTHOR_PID := /home/zaine/logs/authoring-server.pid
AUTHOR_LOG := /home/zaine/logs/authoring-server.log
AUTHOR_PAGES_CHECK := /tmp/authoring-server-pages.json
all: set-perms clean-output build search author-restart clean-venv
build:
@echo "Building project..."
emacs -Q --script build-site.el
set-perms:
@echo "Setting permissions for output directory..."
cd $(PERM_DIR) && sudo ./master-perms.sh
search: $(VENV)
@echo "Generating search index"
$(PY) search-index-json.py
$(VENV):
@echo "Generating virtual environment"
python3 -m venv $(VENV)
$(PIP) install -r requirements.txt
clean-output:
@echo "Cleaning output directory..."
rm -rf output/
clean-venv:
@echo "Cleaning virtual environment..."
rm -rf $(VENV)
norm:
@echo "sorting out the backups..."
find . -path ./backups -prune -o -type f -name '*~' -exec mv {} backups/ \;
author: $(VENV)
@echo "Starting local authoring UI in foreground..."
$(PY) authoring_server.py
author-stop:
@echo "Stopping existing authoring UI if running..."
@mkdir -p /home/zaine/logs
@if [ -f "$(AUTHOR_PID)" ]; then \
PID=$$(cat "$(AUTHOR_PID)"); \
if kill -0 $$PID 2>/dev/null; then \
echo "Stopping PID $$PID"; \
kill $$PID 2>/dev/null || true; \
for i in 1 2 3 4 5; do \
if ! kill -0 $$PID 2>/dev/null; then break; fi; \
sleep 1; \
done; \
if kill -0 $$PID 2>/dev/null; then \
echo "PID $$PID did not stop cleanly; killing it."; \
kill -9 $$PID 2>/dev/null || true; \
fi; \
fi; \
rm -f "$(AUTHOR_PID)"; \
fi
@fuser -k $(AUTHOR_PORT)/tcp >/dev/null 2>&1 || true
author-restart: $(VENV) author-stop
@echo "Starting authoring UI on port $(AUTHOR_PORT)..."
@mkdir -p /home/zaine/logs
@cd "$(CURDIR)" && nohup "$(CURDIR)/$(PY)" -u authoring_server.py > "$(AUTHOR_LOG)" 2>&1 & echo $$! > "$(AUTHOR_PID)"
@echo "Waiting for authoring UI and page list to respond..."
@for i in 1 2 3 4 5 6 7 8 9 10; do \
PID=$$(cat "$(AUTHOR_PID)"); \
if ! kill -0 $$PID 2>/dev/null; then \
echo "Authoring UI process exited before becoming healthy. Last logs:"; \
tail -n 80 "$(AUTHOR_LOG)" || true; \
exit 1; \
fi; \
if curl -fsS "$(AUTHOR_URL)/api/pages" -o "$(AUTHOR_PAGES_CHECK)" && $(PY) -c 'import json,sys; data=json.load(sys.stdin); sys.exit(0 if isinstance(data, list) and data else 1)' < "$(AUTHOR_PAGES_CHECK)"; then \
echo "Authoring UI is running on $(AUTHOR_URL)/"; \
exit 0; \
fi; \
sleep 1; \
done; \
echo "Authoring UI failed to start. Last logs:"; \
tail -n 80 "$(AUTHOR_LOG)" || true; \
exit 1
author-status:
@if [ -f "$(AUTHOR_PID)" ] && kill -0 $$(cat "$(AUTHOR_PID)") 2>/dev/null; then \
echo "PID: $$(cat "$(AUTHOR_PID)")"; \
else \
echo "No live authoring UI PID recorded."; \
fi
@curl -fsS "$(AUTHOR_URL)/api/pages" -o "$(AUTHOR_PAGES_CHECK)" && $(PY) -c 'import json,sys; print(f"Pages: {len(json.load(sys.stdin))}")' < "$(AUTHOR_PAGES_CHECK)" || true
help:
@echo "Available targets:"
@echo " make - Full rebuild and restart authoring UI"
@echo " make build - Rebuild the output directory"
@echo " make set-perms - Set permissions for output directory"
@echo " make clean-output - Remove output directory"
@echo " make clean-venv - Remove venv directory"
@echo " make norm - Move backup files"
@echo " make author - Start the local authoring UI in foreground"
@echo " make author-stop - Stop the authoring UI"
@echo " make author-restart - Restart the authoring UI in background"
@echo " make author-status - Show authoring UI PID and page count"
@echo " make search - Create the search index"
@echo " make help - Show this help message"