oh-my-posh/src/segment_command.go
lnu abfbb27765 fix: don't check language version in Enabled()
fix: align dotnet segment with other languages
feat: missing command text + json schema updated
chore: doc updated
perf: cache executable path
chore: not supported version icon updated(previus one was unreadable)
2020-12-31 16:59:13 +01:00

56 lines
1.2 KiB
Go

package main
import "strings"
type command struct {
props *properties
env environmentInfo
value string
}
const (
// ExecutableShell to execute command in
ExecutableShell Property = "shell"
// Command to execute
Command Property = "command"
)
func (c *command) enabled() bool {
shell := c.props.getString(ExecutableShell, "bash")
shell, commandExists := c.env.hasCommand(shell)
if !commandExists {
return false
}
command := c.props.getString(Command, "echo no command specified")
if strings.Contains(command, "||") {
commands := strings.Split(command, "||")
for _, cmd := range commands {
output := c.env.runShellCommand(shell, cmd)
if output != "" {
c.value = output
return true
}
}
}
if strings.Contains(command, "&&") {
var output string
commands := strings.Split(command, "&&")
for _, cmd := range commands {
output += c.env.runShellCommand(shell, cmd)
}
c.value = output
return c.value != ""
}
c.value = c.env.runShellCommand(shell, command)
return c.value != ""
}
func (c *command) string() string {
return c.value
}
func (c *command) init(props *properties, env environmentInfo) {
c.props = props
c.env = env
}