feat(engine): podman native — auto-detect runtime (docker→podman), compose mengikuti engine, doctor engine-agnostic
CI / test (push) Successful in 25s
CI / test (push) Successful in 25s
This commit is contained in:
1 parent
1b9a406aa7
commit
0551fb1387
12 files changed
+292
-60
No files matched your search
+20
-17
@@ -25,24 +25,30 @@ func Doctor(w io.Writer) int {
|
||||
|
||||
fail := 0
|
||||
|
||||
// Docker — dependency inti.
|
||||
switch cl, err := docker.New(); {
|
||||
// Konfigurasi dimuat lebih dulu — host & compose dipakai di bawah.
|
||||
cfg, cfgErr := config.Load()
|
||||
|
||||
// Engine Docker/Podman — dependency inti (auto-detect bila host kosong).
|
||||
engineName := ""
|
||||
switch cl, engine, err := docker.Detect(cfg.Docker.Host); {
|
||||
case err != nil:
|
||||
fmt.Fprintf(w, "docker : %s %v\n", i18n.T("error.fail"), err)
|
||||
fmt.Fprintf(w, "engine : %s %v\n", i18n.T("error.fail"), err)
|
||||
fail++
|
||||
default:
|
||||
defer cl.Close()
|
||||
if err := cl.Ping(ctx); err != nil {
|
||||
fmt.Fprintf(w, "docker : %s %s\n", i18n.T("error.fail"),
|
||||
i18n.Tf("doctor.dockerDaemonUnreachable", err))
|
||||
fail++
|
||||
} else if info, err := cl.Info(ctx); err != nil {
|
||||
fmt.Fprintf(w, "docker : %s %v\n", i18n.T("error.warn"), err)
|
||||
engineName = engine.Name
|
||||
host := engine.Host
|
||||
if host == "" {
|
||||
host = i18n.T("doctor.hostDefault")
|
||||
}
|
||||
if info, err := cl.Info(ctx); err != nil {
|
||||
fmt.Fprintf(w, "engine : %s %s %v\n", i18n.T("error.warn"), engine.Name, err)
|
||||
} else {
|
||||
fmt.Fprintf(w, "docker : %s %s\n", i18n.T("error.ok"),
|
||||
i18n.Tf("doctor.dockerOk", info.ServerVersion, info.APIVersion,
|
||||
fmt.Fprintf(w, "engine : %s %s\n", i18n.T("error.ok"),
|
||||
i18n.Tf("doctor.engineOk", engine.Name, info.ServerVersion, info.APIVersion,
|
||||
info.Running, info.Containers, info.Images))
|
||||
}
|
||||
fmt.Fprintf(w, "socket : %s\n", host)
|
||||
}
|
||||
|
||||
// Audio — opsional; engine init async, tunggu maks 2 dtk.
|
||||
@@ -52,15 +58,12 @@ func Doctor(w io.Writer) int {
|
||||
|
||||
fmt.Fprintf(w, "go : %s (%s/%s)\n", runtime.Version(), runtime.GOOS, runtime.GOARCH)
|
||||
|
||||
// Konfigurasi (dipakai compose, stack, dan output config di bawah).
|
||||
cfg, cfgErr := config.Load()
|
||||
|
||||
// Compose — dipakai operasi stack (up/down/pull).
|
||||
compose := docker.NewCompose(cfg.Docker.ComposeCommand)
|
||||
// Compose — dipakai operasi stack (up/down/pull); "auto" mengikuti engine.
|
||||
compose := docker.NewCompose(cfg.Docker.ComposeCommand, engineName)
|
||||
if ver, err := compose.Version(ctx); err != nil {
|
||||
fmt.Fprintf(w, "compose : %s %v\n", i18n.T("error.warn"), err)
|
||||
} else {
|
||||
fmt.Fprintf(w, "compose : %s %s\n", i18n.T("error.ok"), i18n.Tf("doctor.composeOk", ver, cfg.Docker.ComposeCommand))
|
||||
fmt.Fprintf(w, "compose : %s %s\n", i18n.T("error.ok"), i18n.Tf("doctor.composeOk", ver, compose.Command()))
|
||||
}
|
||||
|
||||
cfgPath := config.Path()
|
||||
|
||||
Reference in new issue
Block a user