diff --git a/scripts/generate-catalog.sh b/scripts/generate-catalog.sh new file mode 100755 index 0000000..8487cb0 --- /dev/null +++ b/scripts/generate-catalog.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +set -euo pipefail + +DB_FILE="/opt/appfactory/data/appfactory/appfactory.db" +CATALOG_FILE="/opt/appfactory/apps/catalog.yml" + +mkdir -p "$(dirname "$CATALOG_FILE")" + +python3 - "$DB_FILE" "$CATALOG_FILE" <<'PY' +import sqlite3 +import sys +from pathlib import Path + +db_file = Path(sys.argv[1]) +catalog_file = Path(sys.argv[2]) + +con = sqlite3.connect(db_file) + +rows = con.execute(""" +SELECT + id, + name, + language, + version, + status, + COALESCE(memory, ''), + COALESCE(cpus, '') +FROM apps +ORDER BY id +""").fetchall() + +lines = ["apps:"] + +for row in rows: + app_id, name, language, version, status, memory, cpus = row + + lines.append("") + lines.append(f" - id: {app_id}") + lines.append(f" name: {name}") + lines.append(f" language: {language}") + lines.append(f" version: {version}") + lines.append(f" base_path: /apps/{app_id}") + lines.append(f" docs: /apps/{app_id}/docs") + lines.append(f" health: /apps/{app_id}/health") + lines.append(f" status: {status}") + + if memory: + lines.append(f" memory: {memory}") + + if cpus: + lines.append(f' cpus: "{cpus}"') + +catalog_file.write_text( + "\n".join(lines) + "\n", + encoding="utf-8" +) + +print(f"Generated: {catalog_file}") +PY