46 lines
1001 B
Go
46 lines
1001 B
Go
package java
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"zlh-agent/internal/provision/executil"
|
|
"zlh-agent/internal/provision/markers"
|
|
"zlh-agent/internal/state"
|
|
)
|
|
|
|
func Install(cfg state.Config) error {
|
|
marker := runtimeMarker(cfg.Version)
|
|
if runtimeInstalled(cfg.Version) {
|
|
if !markers.IsPresent(marker) {
|
|
return markers.Write(marker)
|
|
}
|
|
return nil
|
|
}
|
|
if markers.IsPresent(marker) {
|
|
return nil
|
|
}
|
|
|
|
if err := executil.RunEmbeddedScript(
|
|
"devcontainer/java/install.sh",
|
|
"RUNTIME=java",
|
|
"ARCHIVE_EXT=tar.gz",
|
|
"RUNTIME_VERSION="+cfg.Version,
|
|
); err != nil {
|
|
return fmt.Errorf("java devcontainer install failed: %w", err)
|
|
}
|
|
|
|
return markers.Write(marker)
|
|
}
|
|
|
|
func runtimeInstalled(version string) bool {
|
|
info, err := os.Stat(filepath.Join("/opt/zlh/runtimes/java", strings.TrimSpace(version)))
|
|
return err == nil && info.IsDir()
|
|
}
|
|
|
|
func runtimeMarker(version string) string {
|
|
return "devcontainer-java-" + strings.ReplaceAll(strings.TrimSpace(version), "/", "_")
|
|
}
|