62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
// 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 ""
|
|
}
|