From 31c77af58fddb816b631aea63bee25474999156d Mon Sep 17 00:00:00 2001 From: lnu Date: Thu, 14 Jan 2021 21:41:05 +0100 Subject: [PATCH] fix: convert exitErr to commandError if runCommand fails exitError must not exit the runCommand helper, only commandError safety check when casting in segment_language --- src/environment.go | 7 ++++++- src/segment_language.go | 5 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/environment.go b/src/environment.go index faee3f8a..a0c91ae3 100644 --- a/src/environment.go +++ b/src/environment.go @@ -170,7 +170,12 @@ func (env *environment) runCommand(command string, args ...string) (string, erro } out, err := exec.Command(command, args...).Output() if err != nil { - return "", err + if exitErr, ok := err.(*exec.ExitError); ok { + return "", &commandError{ + err: exitErr.Error(), + exitCode: exitErr.ExitCode(), + } + } } return strings.TrimSpace(string(out)), nil } diff --git a/src/segment_language.go b/src/segment_language.go index b1d5c253..cac739c2 100644 --- a/src/segment_language.go +++ b/src/segment_language.go @@ -77,9 +77,10 @@ func (l *language) getVersion() bool { l.exitCode = 0 l.version = values["version"] } else { - errors.As(err, &exerr) - l.exitCode = exerr.exitCode l.version = "" + if errors.As(err, &exerr) { + l.exitCode = exerr.exitCode + } } return true }