From b017ff3fbf272808839e344210741206d94d50da Mon Sep 17 00:00:00 2001 From: Stefan Majewsky Date: Sat, 19 Aug 2017 20:42:41 +0200 Subject: prettyprompt: show exit code of previous command --- main.go | 2 +- pkg/prompt/main.go | 6 +++++- pkg/prompt/misc.go | 13 ++++++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index cb82eca..1942c8e 100644 --- a/main.go +++ b/main.go @@ -43,7 +43,7 @@ func execApplet(applet string, args []string, allowGofu bool) int { switch applet { case "prettyprompt": - return prompt.Exec() + return prompt.Exec(args) case "rtree": return rtree.Exec(args) default: diff --git a/pkg/prompt/main.go b/pkg/prompt/main.go index e5096e8..419b704 100644 --- a/pkg/prompt/main.go +++ b/pkg/prompt/main.go @@ -30,7 +30,7 @@ import ( //Exec executes the prettyprompt applet and returns an exit code (0 for //success, >0 for error). -func Exec() int { +func Exec(args []string) int { fields := []string{ getLoginField(), } @@ -39,6 +39,10 @@ func Exec() int { fields = appendUnlessEmpty(fields, getDeletedMessageField(cwd)) fields = appendUnlessEmpty(fields, getRepoStatusField(cwd.RepoRootPath)) fields = appendUnlessEmpty(fields, getTerminalField()) + //this field should always be last + if len(args) > 0 { + fields = appendUnlessEmpty(fields, getExitCodeField(args[0])) + } line := strings.Join(fields, " ") lineWidth := getPrintableLength(line) diff --git a/pkg/prompt/misc.go b/pkg/prompt/misc.go index eaa1848..124015a 100644 --- a/pkg/prompt/misc.go +++ b/pkg/prompt/misc.go @@ -18,7 +18,10 @@ package prompt -import "os" +import ( + "os" + "strconv" +) func getTerminalField() string { termName := os.Getenv("TERM") @@ -30,3 +33,11 @@ func getTerminalField() string { } return withType("term", termName) } + +func getExitCodeField(arg string) string { + exitCode, err := strconv.Atoi(arg) + if err == nil && exitCode > 0 { + return withColor("1;31", "exit:"+arg) + } + return "" +} -- cgit v1.3.1