Files

32 lines
1.1 KiB
Bash

#!/bin/sh
set -eu
ROOT="$(mktemp -d)"
trap 'docker compose -f "$ROOT/compose.yaml" down --volumes >/dev/null 2>&1 || true; rm -rf "$ROOT"' EXIT
mkdir -p "$ROOT/app"
cat > "$ROOT/app/main.py" <<'PY'
from fastapi import FastAPI
app = FastAPI()
@app.get("/health")
def health(): return {"status": "ok"}
PY
# Complete, exact dependency closure; --no-deps prevents unpinned resolution.
cat > "$ROOT/requirements.lock" <<'REQ'
annotated-types==0.7.0
anyio==4.7.0
click==8.1.8
fastapi==0.115.6
h11==0.14.0
idna==3.10
pydantic==2.10.4
pydantic-core==2.27.2
sniffio==1.3.1
starlette==0.41.3
typing-extensions==4.12.2
uvicorn==0.34.0
REQ
cat > "$ROOT/input.json" <<'JSON'
{"service_specification":{"container":{"startup_module":"app.main:app","port":8000,"health_endpoint":"/health"}},"target_management_implementation":{},"endpoint_check_implementation":{},"current_status_implementation":{}}
JSON
containerize-fastapi --input "$ROOT/input.json" --service-dir "$ROOT" --output "$ROOT/output.json" --verify-docker
python -c 'import json,sys; d=json.load(open(sys.argv[1])); assert d["container_artifacts"]["docker_verification"]["passed"]' "$ROOT/output.json"