mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-01-03 07:17:26 -08:00
83 lines
1.6 KiB
Go
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
|
|
}
|