mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2024-11-10 04:54:03 -08:00
111 lines
2.4 KiB
Go
111 lines
2.4 KiB
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
type exit struct {
|
|
props *properties
|
|
env environmentInfo
|
|
}
|
|
|
|
const (
|
|
//ErrorIcon represents icon to display in case of error
|
|
ErrorIcon Property = "error_icon"
|
|
//DisplayErrorCode shows or hides the error code
|
|
DisplayErrorCode Property = "display_error_code"
|
|
//AlwaysEnabled decides whether or not to always display the exitcode info
|
|
AlwaysEnabled Property = "always_enabled"
|
|
//ErrorColor specify a different foreground color for the error text when using always_show = true
|
|
ErrorColor Property = "error_color"
|
|
)
|
|
|
|
func (e *exit) enabled() bool {
|
|
if e.props.getBool(AlwaysEnabled, false) {
|
|
return true
|
|
}
|
|
return e.env.lastErrorCode() != 0
|
|
}
|
|
|
|
func (e *exit) string() string {
|
|
return e.getFormattedText()
|
|
}
|
|
|
|
func (e *exit) init(props *properties, env environmentInfo) {
|
|
e.props = props
|
|
e.env = env
|
|
}
|
|
|
|
func (e *exit) getFormattedText() string {
|
|
errorIcon := e.props.getString(ErrorIcon, "X")
|
|
exitCode := e.getMeaningFromExitCode()
|
|
colorBackground := e.props.getBool(ColorBackground, false)
|
|
if e.env.lastErrorCode() != 0 && !colorBackground {
|
|
e.props.foreground = e.props.getColor(ErrorColor, e.props.foreground)
|
|
}
|
|
if e.env.lastErrorCode() != 0 && colorBackground {
|
|
e.props.background = e.props.getColor(ErrorColor, e.props.background)
|
|
}
|
|
return fmt.Sprintf("%s%s", errorIcon, exitCode)
|
|
}
|
|
|
|
func (e *exit) getMeaningFromExitCode() string {
|
|
if !e.props.getBool(DisplayErrorCode, true) {
|
|
return ""
|
|
}
|
|
switch e.env.lastErrorCode() {
|
|
case 1:
|
|
return "ERROR"
|
|
case 2:
|
|
return "USAGE"
|
|
case 126:
|
|
return "NOPERM"
|
|
case 127:
|
|
return "NOTFOUND"
|
|
case 128 + 1:
|
|
return "SIGHUP"
|
|
case 128 + 2:
|
|
return "SIGINT"
|
|
case 128 + 3:
|
|
return "SIGQUIT"
|
|
case 128 + 4:
|
|
return "SIGILL"
|
|
case 128 + 5:
|
|
return "SIGTRAP"
|
|
case 128 + 6:
|
|
return "SIGIOT"
|
|
case 128 + 7:
|
|
return "SIGBUS"
|
|
case 128 + 8:
|
|
return "SIGFPE"
|
|
case 128 + 9:
|
|
return "SIGKILL"
|
|
case 128 + 10:
|
|
return "SIGUSR1"
|
|
case 128 + 11:
|
|
return "SIGSEGV"
|
|
case 128 + 12:
|
|
return "SIGUSR2"
|
|
case 128 + 13:
|
|
return "SIGPIPE"
|
|
case 128 + 14:
|
|
return "SIGALRM"
|
|
case 128 + 15:
|
|
return "SIGTERM"
|
|
case 128 + 16:
|
|
return "SIGSTKFLT"
|
|
case 128 + 17:
|
|
return "SIGCHLD"
|
|
case 128 + 18:
|
|
return "SIGCONT"
|
|
case 128 + 19:
|
|
return "SIGSTOP"
|
|
case 128 + 20:
|
|
return "SIGTSTP"
|
|
case 128 + 21:
|
|
return "SIGTTIN"
|
|
case 128 + 22:
|
|
return "SIGTTOU"
|
|
default:
|
|
return fmt.Sprintf("%d", e.env.lastErrorCode())
|
|
}
|
|
}
|