oh-my-posh/src/segment_session.go
2022-01-01 20:22:52 +01:00

83 lines
1.6 KiB
Go

package main
import "strings"
type session struct {
props Properties
env Environment
text string
UserName string
ComputerName string
SSHSession bool
Root bool
// Deprecated
DefaultUserName string
}
func (s *session) enabled() bool {
s.SSHSession = s.activeSSHSession()
segmentTemplate := s.props.getString(SegmentTemplate, "")
if segmentTemplate == "" {
return s.legacyEnabled()
}
s.UserName = s.getUserName()
s.ComputerName = s.getComputerName()
s.Root = s.env.isRunningAsRoot()
template := &textTemplate{
Template: segmentTemplate,
Context: s,
Env: s.env,
}
var err error
s.text, err = template.render()
if err != nil {
s.text = err.Error()
}
return len(s.text) > 0
}
func (s *session) string() string {
if len(s.text) != 0 {
return s.text
}
return s.getFormattedText()
}
func (s *session) init(props Properties, env Environment) {
s.props = props
s.env = env
}
func (s *session) getUserName() string {
user := s.env.getCurrentUser()
username := strings.TrimSpace(user)
if s.env.getRuntimeGOOS() == "windows" && strings.Contains(username, "\\") {
username = strings.Split(username, "\\")[1]
}
return username
}
func (s *session) getComputerName() string {
computername, err := s.env.getHostName()
if err != nil {
computername = "unknown"
}
return strings.TrimSpace(computername)
}
func (s *session) activeSSHSession() bool {
keys := []string{
"SSH_CONNECTION",
"SSH_CLIENT",
}
for _, key := range keys {
content := s.env.getenv(key)
if content != "" {
return true
}
}
return false
}