mirror of
https://github.com/OliveTin/OliveTin
synced 2025-12-14 10:05:41 +00:00
56 lines
923 B
Go
56 lines
923 B
Go
package installationinfo
|
|
|
|
import (
|
|
"bufio"
|
|
"errors"
|
|
"os"
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
type runtimeInfo struct {
|
|
OS string
|
|
OSReleasePrettyName string
|
|
Arch string
|
|
InContainer bool
|
|
LastBrowserUserAgent string
|
|
}
|
|
|
|
func isInContainer() bool {
|
|
if _, err := os.Stat("/.dockerenv"); errors.Is(err, os.ErrNotExist) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
func getOsReleasePrettyName() string {
|
|
handle, err := os.Open("/etc/os-release")
|
|
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
|
|
scanner := bufio.NewScanner(handle)
|
|
scanner.Split(bufio.ScanLines)
|
|
|
|
for scanner.Scan() {
|
|
line := scanner.Text()
|
|
|
|
if strings.Contains(line, "PRETTY_NAME") {
|
|
return line
|
|
}
|
|
}
|
|
|
|
handle.Close()
|
|
|
|
return "notfound"
|
|
}
|
|
|
|
var Runtime = &runtimeInfo{
|
|
OS: runtime.GOOS,
|
|
Arch: runtime.GOARCH,
|
|
InContainer: isInContainer(),
|
|
OSReleasePrettyName: getOsReleasePrettyName(),
|
|
}
|