From d46a64a41ec70708dbfddf4d5536ddc06eb4cf04 Mon Sep 17 00:00:00 2001 From: jester Date: Fri, 19 Dec 2025 21:33:16 +0000 Subject: [PATCH] agent fix 12-19-25 --- .../provision/devcontainer/node/install.go | 13 +++------ internal/provision/executil/embedded_exec.go | 28 +++++++++++++++++++ .../codeserver/install.sh | 0 scripts/assets.go | 6 ++++ 4 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 internal/provision/executil/embedded_exec.go rename scripts/{devcontainer => addons}/codeserver/install.sh (100%) create mode 100644 scripts/assets.go diff --git a/internal/provision/devcontainer/node/install.go b/internal/provision/devcontainer/node/install.go index 20fe945..e0f918f 100644 --- a/internal/provision/devcontainer/node/install.go +++ b/internal/provision/devcontainer/node/install.go @@ -2,7 +2,6 @@ package node import ( "fmt" - "path/filepath" "zlh-agent/internal/provision/executil" "zlh-agent/internal/provision/markers" @@ -16,14 +15,10 @@ func Install(cfg state.Config) error { return nil } - scriptPath := filepath.Join( - executil.ScriptsRoot, - "devcontainer", - "node", - "install.sh", - ) - - if err := executil.RunScript(scriptPath); err != nil { + // Execute embedded installer (mirrors game server model) + if err := executil.RunEmbeddedScript( + "scripts/devcontainer/node/install.sh", + ); err != nil { return fmt.Errorf("node devcontainer install failed: %w", err) } diff --git a/internal/provision/executil/embedded_exec.go b/internal/provision/executil/embedded_exec.go new file mode 100644 index 0000000..37f25a3 --- /dev/null +++ b/internal/provision/executil/embedded_exec.go @@ -0,0 +1,28 @@ +package executil + +import ( + "bytes" + "fmt" + "os" + "os/exec" + + "zlh-agent/scripts" +) + +// RunEmbeddedScript executes an embedded script via bash by piping its contents to stdin. +// This mirrors RunScript's stdout/stderr behavior without requiring any files on disk. +func RunEmbeddedScript(path string) error { + data, err := scripts.FS.ReadFile(path) + if err != nil { + return fmt.Errorf("embedded script not found: %s", path) + } + + cmd := exec.Command("bash") + cmd.Stdin = bytes.NewReader(data) + + // Match RunScript behavior (executil.go) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + return cmd.Run() +} \ No newline at end of file diff --git a/scripts/devcontainer/codeserver/install.sh b/scripts/addons/codeserver/install.sh similarity index 100% rename from scripts/devcontainer/codeserver/install.sh rename to scripts/addons/codeserver/install.sh diff --git a/scripts/assets.go b/scripts/assets.go new file mode 100644 index 0000000..5988930 --- /dev/null +++ b/scripts/assets.go @@ -0,0 +1,6 @@ +package scripts + +import "embed" + +//go:embed *.sh +var ScriptsFS embed.FS \ No newline at end of file