mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2024-12-28 04:19:41 -08:00
60 lines
1.3 KiB
Go
60 lines
1.3 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")
|
|
if !c.env.hasCommand(shell) {
|
|
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) runCommand(command string) string {
|
|
// args := strings.Fields(command)
|
|
// return c.env.runCommand(args[0], args[1:]...)
|
|
// }
|
|
|
|
func (c *command) init(props *properties, env environmentInfo) {
|
|
c.props = props
|
|
c.env = env
|
|
}
|