mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2024-12-28 04:19:41 -08:00
56f4bcfd86
relates to #55
71 lines
1.8 KiB
Go
Executable file
71 lines
1.8 KiB
Go
Executable file
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type session struct {
|
|
props *properties
|
|
env environmentInfo
|
|
}
|
|
|
|
const (
|
|
//UserInfoSeparator is put between the user and computer name
|
|
UserInfoSeparator Property = "user_info_separator"
|
|
//UserColor if set, is used to color the user name
|
|
UserColor Property = "user_color"
|
|
//HostColor if set, is used to color the computer name
|
|
HostColor Property = "host_color"
|
|
//DisplayHost hides or show the computer name
|
|
DisplayHost Property = "display_host"
|
|
//DisplayUser hides or shows the user name
|
|
DisplayUser Property = "display_user"
|
|
)
|
|
|
|
func (s *session) enabled() bool {
|
|
return true
|
|
}
|
|
|
|
func (s *session) string() string {
|
|
return s.getFormattedText()
|
|
}
|
|
|
|
func (s *session) init(props *properties, env environmentInfo) {
|
|
s.props = props
|
|
s.env = env
|
|
}
|
|
|
|
func (s *session) getFormattedText() string {
|
|
username := s.getUserName()
|
|
computername := s.getComputerName()
|
|
separator := ""
|
|
if s.props.getBool(DisplayHost, true) && s.props.getBool(DisplayUser, true) {
|
|
separator = s.props.getString(UserInfoSeparator, "@")
|
|
}
|
|
return fmt.Sprintf("<%s>%s</>%s<%s>%s</>", s.props.getColor(UserColor, s.props.foreground), username, separator, s.props.getColor(HostColor, s.props.foreground), computername)
|
|
}
|
|
|
|
func (s *session) getComputerName() string {
|
|
if !s.props.getBool(DisplayHost, true) {
|
|
return ""
|
|
}
|
|
computername, err := s.env.getHostName()
|
|
if err != nil {
|
|
computername = "unknown"
|
|
}
|
|
return strings.TrimSpace(computername)
|
|
}
|
|
|
|
func (s *session) getUserName() string {
|
|
if !s.props.getBool(DisplayUser, true) {
|
|
return ""
|
|
}
|
|
user := s.env.getCurrentUser()
|
|
username := strings.TrimSpace(user)
|
|
if s.env.getRuntimeGOOS() == "windows" && strings.Contains(username, "\\") {
|
|
username = strings.Split(username, "\\")[1]
|
|
}
|
|
return username
|
|
}
|