Files
wehub-resource-sync 36b3af2e3d
PR Check / Code Quality: Format (push) Failing after 1s
PR Check / Code Quality: Lint (darwin) (push) Failing after 0s
PR Check / Code Quality: Lint (freebsd) (push) Failing after 1s
PR Check / Code Quality: Lint (windows) (push) Failing after 1s
PR Check / Code Quality: Lint (linux) (push) Failing after 1s
PR Check / Security: Vulnerability Scan (push) Failing after 0s
Update Documentation / update-docs (push) Failing after 2s
PR Check / Code Quality: Vendor (push) Failing after 1s
PR Check / Code Quality: Coverage (push) Failing after 0s
PR Check / Tests: Unit (macos-latest) (push) Has been cancelled
PR Check / Tests: Unit (ubuntu-24.04) (push) Has been cancelled
PR Check / Tests: Unit (ubuntu-24.04-arm) (push) Has been cancelled
PR Check / Tests: Unit (windows-latest) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:22:06 +08:00

61 lines
1.8 KiB
Go

package proc
import "strings"
// detectContainerFromCmdline checks the command line for container runtime patterns.
// Used by darwin, freebsd, and windows where cgroup-based detection is not available.
func detectContainerFromCmdline(cmdline string) string {
if cmdline == "" {
return ""
}
lowerCmd := strings.ToLower(cmdline)
switch {
case strings.Contains(lowerCmd, "docker"):
if name := extractFlagValue(cmdline, "--name"); name != "" {
return "docker: " + name
}
return "docker"
case strings.Contains(lowerCmd, "podman"), strings.Contains(lowerCmd, "libpod"):
if name := extractFlagValue(cmdline, "--name"); name != "" {
return "podman: " + name
}
return "podman"
case strings.Contains(lowerCmd, "minikube"):
if profile := extractFlagValue(cmdline, "-p", "--profile"); profile != "" {
return "k8s: " + profile
}
return "kubernetes"
case strings.Contains(lowerCmd, "kind"):
if name := extractFlagValue(cmdline, "--name"); name != "" {
return "k8s: " + name
}
return "kubernetes"
case strings.Contains(lowerCmd, "kubepods"):
if id := findLongHexID(cmdline); id != "" {
if name := resolveContainerName(id, "crictl"); name != "" {
return "k8s: " + name
}
return "k8s (" + shortID(id) + ")"
}
return "kubernetes"
case strings.Contains(lowerCmd, "colima"):
if profile := extractFlagValue(cmdline, "-p", "--profile"); profile != "" {
return "colima: " + profile
}
return "colima: default"
case strings.Contains(lowerCmd, "nerdctl"):
if name := extractFlagValue(cmdline, "--name"); name != "" {
return "containerd: " + name
}
return "containerd"
case strings.Contains(lowerCmd, "containerd"):
if name := extractFlagValue(cmdline, "--name"); name != "" {
return "containerd: " + name
}
return "containerd"
}
return ""
}