Files

85 lines
1.8 KiB
Bash
Executable File

#!/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, ''),
COALESCE(container_port, 8000),
COALESCE(health_url, '/health'),
COALESCE(runtime, ''),
COALESCE(template, '')
FROM apps
WHERE is_enabled = 1
ORDER BY id
""").fetchall()
lines = ["apps:"]
for row in rows:
(
app_id,
name,
language,
version,
status,
memory,
cpus,
container_port,
health_url,
runtime,
template,
) = row
if not str(health_url).startswith("/"):
health_path = "/health"
else:
health_path = health_url
lines.append("")
lines.append(f" - id: {app_id}")
lines.append(f" name: {name}")
lines.append(f" language: {language}")
lines.append(f" runtime: {runtime}")
lines.append(f" template: {template}")
lines.append(f" version: {version}")
lines.append(f" container_port: {container_port}")
lines.append(f" base_path: /apps/{app_id}")
lines.append(f" docs: /apps/{app_id}/docs")
lines.append(f" health: /apps/{app_id}{health_path}")
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