zlh-agent/internal/provision/devcontainer/devcontainer.go
2026-03-15 11:06:08 +00:00

50 lines
1.0 KiB
Go

package devcontainer
import (
"fmt"
"strings"
"zlh-agent/internal/state"
"zlh-agent/internal/provision/devcontainer/dotnet"
devgo "zlh-agent/internal/provision/devcontainer/go"
"zlh-agent/internal/provision/devcontainer/java"
"zlh-agent/internal/provision/devcontainer/node"
"zlh-agent/internal/provision/devcontainer/python"
)
func Provision(cfg state.Config) error {
if err := ValidateRuntimeSelection(cfg); err != nil {
return err
}
if err := EnsureDevUserEnvironment(); err != nil {
return err
}
runtime := strings.ToLower(cfg.Runtime)
var err error
switch runtime {
case "node":
err = node.Install(cfg)
case "python":
err = python.Install(cfg)
case "go":
err = devgo.Install(cfg)
case "java":
err = java.Install(cfg)
case "dotnet":
err = dotnet.Install(cfg)
default:
return fmt.Errorf("unsupported dev container runtime: %s", runtime)
}
if err != nil {
return err
}
if err := WriteReadyMarker(runtime); err != nil {
return fmt.Errorf("write dev ready marker: %w", err)
}
return nil
}