generate outside generated
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
@@ -32,7 +32,7 @@ python build.py --all # -> all rooms
|
|||||||
./ctrl/logs.sh <room> # View logs
|
./ctrl/logs.sh <room> # View logs
|
||||||
|
|
||||||
# Bare-metal dev (without Docker)
|
# Bare-metal dev (without Docker)
|
||||||
cd gen/standalone && .venv/bin/python run.py
|
cd gen/standalone && python run.py
|
||||||
```
|
```
|
||||||
|
|
||||||
## Adding a New Room
|
## Adding a New Room
|
||||||
@@ -48,4 +48,4 @@ python build.py --cfg myroom
|
|||||||
cd gen/myroom/soleprint && docker compose up
|
cd gen/myroom/soleprint && docker compose up
|
||||||
```
|
```
|
||||||
|
|
||||||
Or use the generation UI at `/generate`.
|
Or use the generation UI: `python -m http.server 8080` in `spr/` and visit `/generate.html`.
|
||||||
|
|||||||
1
build.py
1
build.py
@@ -280,7 +280,6 @@ def build_soleprint(output_dir: Path, room: str):
|
|||||||
"main.py",
|
"main.py",
|
||||||
"run.py",
|
"run.py",
|
||||||
"index.html",
|
"index.html",
|
||||||
"generate.html",
|
|
||||||
"requirements.txt",
|
"requirements.txt",
|
||||||
"Dockerfile",
|
"Dockerfile",
|
||||||
]:
|
]:
|
||||||
|
|||||||
@@ -296,72 +296,6 @@ def station_route(path: str):
|
|||||||
return {"system": "station", "path": path}
|
return {"system": "station", "path": path}
|
||||||
|
|
||||||
|
|
||||||
# === Generate ===
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/generate")
|
|
||||||
def generate_ui():
|
|
||||||
"""Serve the generation UI."""
|
|
||||||
from fastapi.responses import FileResponse
|
|
||||||
|
|
||||||
return FileResponse(SPR_ROOT / "generate.html")
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/generate")
|
|
||||||
def generate_config(req: dict):
|
|
||||||
"""Generate a config.json for a new room."""
|
|
||||||
config = load_config()
|
|
||||||
hub_port = config.get("framework", {}).get("hub_port", 12000)
|
|
||||||
|
|
||||||
framework = req.get("framework", {})
|
|
||||||
systems = req.get("systems", {})
|
|
||||||
managed = req.get("managed")
|
|
||||||
|
|
||||||
result = {
|
|
||||||
"framework": {
|
|
||||||
"name": framework.get("name", "soleprint"),
|
|
||||||
"slug": framework.get("name", "soleprint").lower().replace(" ", "-"),
|
|
||||||
"version": "0.1.0",
|
|
||||||
"hub_port": hub_port,
|
|
||||||
},
|
|
||||||
"systems": [
|
|
||||||
{
|
|
||||||
"key": "data_flow",
|
|
||||||
"name": systems.get("artery", "artery"),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "documentation",
|
|
||||||
"name": systems.get("atlas", "atlas"),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "execution",
|
|
||||||
"name": systems.get("station", "station"),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
||||||
if managed and managed.get("name"):
|
|
||||||
result["managed"] = {"name": managed["name"], "repos": managed.get("repos", {})}
|
|
||||||
|
|
||||||
return {"config": result, "room_name": req.get("room_name")}
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/generate/preview")
|
|
||||||
def generate_preview(req: dict):
|
|
||||||
"""Preview the generated folder structure."""
|
|
||||||
room = req.get("room_name") or "room"
|
|
||||||
fw = req.get("framework", {}).get("name") or "soleprint"
|
|
||||||
managed = req.get("managed")
|
|
||||||
|
|
||||||
lines = [f'<span class="folder">gen/{room}/</span>']
|
|
||||||
if managed and managed.get("name"):
|
|
||||||
lines.append(f' <span class="folder">{managed["name"]}/</span>')
|
|
||||||
lines.append(' <span class="folder">link/</span>')
|
|
||||||
lines.append(f' <span class="folder">{fw}/</span>')
|
|
||||||
|
|
||||||
return {"tree": "\n".join(lines)}
|
|
||||||
|
|
||||||
|
|
||||||
# === Main ===
|
# === Main ===
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user