zlh-agent/internal/provision/executil/embedded_exec.go
2025-12-21 22:11:44 +00:00

35 lines
762 B
Go

package executil
import (
"bytes"
"fmt"
"os"
"os/exec"
"strings"
"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 {
normalized := normalizeEmbeddedPath(path)
data, err := scripts.FS.ReadFile(normalized)
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()
}
func normalizeEmbeddedPath(path string) string {
return strings.TrimPrefix(path, "scripts/")
}