mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2024-12-28 04:19:41 -08:00
137 lines
3.8 KiB
Go
137 lines
3.8 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type osInfo struct {
|
|
props *properties
|
|
env environmentInfo
|
|
}
|
|
|
|
const (
|
|
// MacOS the string/icon to use for MacOS
|
|
MacOS Property = "macos"
|
|
// Linux the string/icon to use for linux
|
|
Linux Property = "linux"
|
|
// Windows the string/icon to use for windows
|
|
Windows Property = "windows"
|
|
// WSL the string/icon to use for WSL
|
|
WSL Property = "wsl"
|
|
// WSLSeparator shows between WSL and Linux properties when WSL is detected
|
|
WSLSeparator Property = "wsl_separator"
|
|
// Alpine the string/icon to use for Alpine
|
|
Alpine Property = "alpine"
|
|
// Aosc the string/icon to use for Aosc
|
|
Aosc Property = "aosc"
|
|
// Arch the string/icon to use for Arch
|
|
Arch Property = "arch"
|
|
// Centos the string/icon to use for Centos
|
|
Centos Property = "centos"
|
|
// Coreos the string/icon to use for Coreos
|
|
Coreos Property = "coreos"
|
|
// Debian the string/icon to use for Debian
|
|
Debian Property = "debian"
|
|
// Devuan the string/icon to use for Devuan
|
|
Devuan Property = "devuan"
|
|
// Raspbian the string/icon to use for Raspbian
|
|
Raspbian Property = "raspbian"
|
|
// Elementary the string/icon to use for Elementary
|
|
Elementary Property = "elementary"
|
|
// Fedora the string/icon to use for Fedora
|
|
Fedora Property = "fedora"
|
|
// Gentoo the string/icon to use for Gentoo
|
|
Gentoo Property = "gentoo"
|
|
// Mageia the string/icon to use for Mageia
|
|
Mageia Property = "mageia"
|
|
// Manjaro the string/icon to use for Manjaro
|
|
Manjaro Property = "manjaro"
|
|
// Mint the string/icon to use for Mint
|
|
Mint Property = "mint"
|
|
// Nixos the string/icon to use for Nixos
|
|
Nixos Property = "nixos"
|
|
// Opensuse the string/icon to use for Opensuse
|
|
Opensuse Property = "opensuse"
|
|
// Sabayon the string/icon to use for Sabayon
|
|
Sabayon Property = "sabayon"
|
|
// Slackware the string/icon to use for Slackware
|
|
Slackware Property = "slackware"
|
|
// Ubuntu the string/icon to use for Ubuntu
|
|
Ubuntu Property = "ubuntu"
|
|
)
|
|
|
|
func (n *osInfo) enabled() bool {
|
|
return true
|
|
}
|
|
|
|
func (n *osInfo) string() string {
|
|
goos := n.env.getRuntimeGOOS()
|
|
switch goos {
|
|
case windowsPlatform:
|
|
return n.props.getString(Windows, "\uE62A")
|
|
case "darwin":
|
|
return n.props.getString(MacOS, "\uF179")
|
|
case "linux":
|
|
wsl := n.env.getenv("WSL_DISTRO_NAME")
|
|
p := n.env.getPlatform()
|
|
if wsl != "" {
|
|
return fmt.Sprintf("%s%s%s",
|
|
n.props.getString(WSL, "WSL"),
|
|
n.props.getString(WSLSeparator, " - "),
|
|
getLinuxIcon(n, p))
|
|
}
|
|
return getLinuxIcon(n, p)
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
func getLinuxIcon(n *osInfo, p string) string {
|
|
switch p {
|
|
case "alpine":
|
|
return n.props.getString(Alpine, "\uF300")
|
|
case "aosc":
|
|
return n.props.getString(Aosc, "\uF301")
|
|
case "arch":
|
|
return n.props.getString(Arch, "\uF303")
|
|
case "centos":
|
|
return n.props.getString(Centos, "\uF304")
|
|
case "coreos":
|
|
return n.props.getString(Coreos, "\uF305")
|
|
case "debian":
|
|
return n.props.getString(Debian, "\uF306")
|
|
case "devuan":
|
|
return n.props.getString(Devuan, "\uF307")
|
|
case "raspbian":
|
|
return n.props.getString(Raspbian, "\uF315")
|
|
case "elementary":
|
|
return n.props.getString(Elementary, "\uF309")
|
|
case "fedora":
|
|
return n.props.getString(Fedora, "\uF30a")
|
|
case "gentoo":
|
|
return n.props.getString(Gentoo, "\uF30d")
|
|
case "mageia":
|
|
return n.props.getString(Mageia, "\uF310")
|
|
case "manjaro":
|
|
return n.props.getString(Manjaro, "\uF312")
|
|
case "mint":
|
|
return n.props.getString(Mint, "\uF30e")
|
|
case "nixos":
|
|
return n.props.getString(Nixos, "\uF313")
|
|
case "opensuse":
|
|
return n.props.getString(Opensuse, "\uF314")
|
|
case "sabayon":
|
|
return n.props.getString(Sabayon, "\uF317")
|
|
case "slackware":
|
|
return n.props.getString(Slackware, "\uF319")
|
|
case "ubuntu":
|
|
return n.props.getString(Ubuntu, "\uF31b")
|
|
}
|
|
return n.props.getString(Linux, "\uF17C")
|
|
}
|
|
|
|
func (n *osInfo) init(props *properties, env environmentInfo) {
|
|
n.props = props
|
|
n.env = env
|
|
}
|