Build Pigway Frame Flow with bilingual UI, complete KoKonna driver and safe automation
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
"""Validate Compose on a named SSH host, in a fresh temporary directory.
|
||||
|
||||
No Docker daemon access, project deployment or existing container mutation.
|
||||
"""
|
||||
|
||||
import os
|
||||
import shlex
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
host = os.getenv("FRAME_FLOW_SSH_HOST", "nas-example")
|
||||
args = ["ssh", "-o", "BatchMode=yes", "-o", "ConnectTimeout=8", host]
|
||||
remote = subprocess.check_output(
|
||||
args + ["mktemp -d /tmp/pigway-frame-flow-compose.XXXXXX"], text=True
|
||||
).strip()
|
||||
if not remote.startswith("/tmp/pigway-frame-flow-compose.") or any(
|
||||
c in remote for c in " \n\r"
|
||||
):
|
||||
raise RuntimeError("Invalid temporary path")
|
||||
subprocess.run(
|
||||
[
|
||||
"scp",
|
||||
"-O",
|
||||
str(root / "docker-compose.yml"),
|
||||
host + ":" + remote + "/docker-compose.yml",
|
||||
],
|
||||
check=True,
|
||||
)
|
||||
subprocess.run(
|
||||
["scp", "-O", str(root / ".env.example"), host + ":" + remote + "/.env"], check=True
|
||||
)
|
||||
subprocess.run(
|
||||
args
|
||||
+ [
|
||||
"cd " + shlex.quote(remote) + " && /usr/local/bin/docker compose config --quiet"
|
||||
],
|
||||
check=True,
|
||||
)
|
||||
print("docker compose config: PASS (remote CLI only; not a Docker build)")
|
||||
Reference in New Issue
Block a user