#!/usr/bin/env bash set -euo pipefail CONFIG_FILE="/opt/appfactory/config/appfactory.env" source "$CONFIG_FILE" APP_ID="${1:-}" DB_FILE="/opt/appfactory/data/appfactory/appfactory.db" TOOLS_DIR="$WORKSPACE_DIR/appfactory-tools" if [ -z "$APP_ID" ]; then echo "Usage: ./delete-app.sh " exit 1 fi echo "Deleting app: $APP_ID" echo "Deleting Gitea repository..." curl -sS -X DELETE \ "$GITEA_URL/api/v1/repos/$GITEA_ORG/$APP_ID" \ -H "Authorization: token $GITEA_TOKEN" || true echo "Stopping container..." docker rm -f "$APP_ID" || true echo "Removing image..." docker image rm "$APP_ID:latest" || true echo "Removing workspace..." rm -rf "$WORKSPACE_DIR/$APP_ID" echo "Removing app from database..." python3 - "$DB_FILE" "$APP_ID" <<'PY' import sqlite3 import sys db_file = sys.argv[1] app_id = sys.argv[2] con = sqlite3.connect(db_file) con.execute( "DELETE FROM deployments WHERE app_id = ?", (app_id,) ) con.execute( "DELETE FROM apps WHERE id = ?", (app_id,) ) con.commit() con.close() PY echo "Regenerating generated files..." "$TOOLS_DIR/scripts/generate-catalog.sh" "$TOOLS_DIR/scripts/generate-apps-compose.sh" "$TOOLS_DIR/scripts/generate-caddyfile.sh" "$TOOLS_DIR/scripts/generate-apps-page.sh" echo "Reloading Caddy..." docker exec appfactory-caddy caddy validate \ --config /etc/caddy/Caddyfile docker exec appfactory-caddy caddy reload \ --config /etc/caddy/Caddyfile echo "" echo "DONE"