// Copyright 2024 WIT.COM Inc. package zoopb // 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 "" }