85 lines
1.8 KiB
Bash
Executable File
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
|