Add bootstrap v2, preflight readiness and migration tooling

This commit is contained in:
2026-06-08 08:25:05 +02:00
parent c5c746ff97
commit 817e8ff862
7 changed files with 1133 additions and 26 deletions
+82
View File
@@ -0,0 +1,82 @@
#!/usr/bin/env bash
set -euo pipefail
DB_FILE="/opt/appfactory/data/appfactory/appfactory.db"
CATALOG_FILE="/opt/appfactory/apps/catalog.yml"
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])
if not db_file.exists():
raise SystemExit(f"Missing database: {db_file}")
if not catalog_file.exists():
raise SystemExit(f"Missing catalog: {catalog_file}")
apps = []
current = None
for raw_line in catalog_file.read_text(encoding="utf-8").splitlines():
line = raw_line.strip()
if line.startswith("- id:"):
if current:
apps.append(current)
current = {"id": line.split(":", 1)[1].strip()}
elif current and ":" in line:
key, value = line.split(":", 1)
current[key.strip()] = value.strip().strip('"')
if current:
apps.append(current)
con = sqlite3.connect(db_file)
for item in apps:
app_id = item.get("id")
if not app_id:
continue
con.execute(
"""
INSERT INTO apps (
id, name, language, version, status, memory, cpus
)
VALUES (?, ?, ?, ?, ?, ?, ?)
ON CONFLICT(id) DO UPDATE SET
name = excluded.name,
language = excluded.language,
version = excluded.version,
status = excluded.status,
memory = excluded.memory,
cpus = excluded.cpus,
updated_at = CURRENT_TIMESTAMP
""",
(
app_id,
item.get("name") or app_id,
item.get("language") or "python",
item.get("version") or "1.0.0",
item.get("status") or "deployed",
item.get("memory") or None,
item.get("cpus") or None,
),
)
con.commit()
rows = con.execute(
"SELECT id, language, status, COALESCE(memory, ''), COALESCE(cpus, '') FROM apps ORDER BY id"
).fetchall()
print("Migration completed.")
for row in rows:
print(" | ".join(row))
con.close()
PY