diff options
Diffstat (limited to 'distro.go')
| -rw-r--r-- | distro.go | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/distro.go b/distro.go new file mode 100644 index 0000000..a912e2f --- /dev/null +++ b/distro.go @@ -0,0 +1,61 @@ +// Copyright 2024 WIT.COM Inc. + +package debian + +// simple stab at making a human readable distro name +// this is for displaying in a table in the zookeeper app +// it's just so you can easily see what machines in your grid are +// doing what + +import ( + "bufio" + "fmt" + "os" + "runtime" + "strings" +) + +func initDistro() string { + switch runtime.GOOS { + case "windows": + return "windows" + case "macos": + return "macos" + case "linux": + // Detect the Linux distribution + distro := detectDistro() + if distro == "" { + fmt.Println("Unable to detect Linux distribution.") + distro = "fixme" + } + + fmt.Printf("Detected distribution: %s\n", distro) + return distro + default: + return runtime.GOOS + } +} + +// detectDistro returns the Linux distribution name (if possible) +func detectDistro() string { + // Check if we're on Linux + + // Try to read /etc/os-release to determine the distro + file, err := os.Open("/etc/os-release") + if err != nil { + return "" + } + defer file.Close() + + scanner := bufio.NewScanner(file) + for scanner.Scan() { + line := scanner.Text() + if strings.HasPrefix(line, "ID=") { + parts := strings.SplitN(line, "=", 2) + if len(parts) == 2 { + return strings.Trim(parts[1], `"`) + } + } + } + return "" +} |
