zlh-agent/internal/provision/devcontainer/node/install.go

50 lines
1.0 KiB
Go

package node
import (
"fmt"
"path/filepath"
"zlh-agent/internal/provision"
"zlh-agent/internal/provision/devcontainer"
"zlh-agent/internal/state"
)
/*
Install installs the Node.js dev container runtime.
Execution model:
- Uses local, versioned install scripts from the agent repo
- Scripts are responsible for fetching artifacts
- Artifact server is NOT an execution source
IMPORTANT:
- This function ONLY installs
- No verification here
*/
func Install(cfg state.Config) error {
// Idempotency guard
if devcontainer.IsProvisioned() {
return nil
}
// Local script path (inside agent repo / container)
scriptPath := filepath.Join(
provision.ScriptsRoot,
"devcontainer",
"node",
"install.sh",
)
if err := provision.RunScript(scriptPath); err != nil {
return fmt.Errorf("node devcontainer install failed: %w", err)
}
// Mark devcontainer ready
if err := devcontainer.WriteReadyMarker("node"); err != nil {
return fmt.Errorf("failed to write devcontainer ready marker: %w", err)
}
return nil
}