diff options
author | Teddy Wing | 2020-12-22 19:12:46 +0100 |
---|---|---|
committer | Teddy Wing | 2020-12-22 19:12:46 +0100 |
commit | a3fbf30512c30a8c9fac051063954f5a64eff9f3 (patch) | |
tree | 0e56773d6e7193b942b55e055adb879615fce2b5 /browserenv.go | |
parent | b89d9ed327fe7689edd72bfec815d754a724b850 (diff) | |
download | browserenv-format-errors-and-use-error-values.tar.bz2 |
Return package-specific error messagesformat-errors-and-use-error-values
Instead of passing errors through to clients, wrap them with a
"browserenv" error message to add context.
Add new error types that can be matched against.
Diffstat (limited to 'browserenv.go')
-rw-r--r-- | browserenv.go | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/browserenv.go b/browserenv.go index 6812700..eaff96e 100644 --- a/browserenv.go +++ b/browserenv.go @@ -50,7 +50,7 @@ func OpenFile(path string) error { if envCommand != "" { path, err := filepath.Abs(path) if err != nil { - return err + return &PathResolutionError{path, err} } url := "file://" + path @@ -70,12 +70,12 @@ func OpenReader(r io.Reader) error { if envCommand != "" { tempFile, err := ioutil.TempFile("", "browserenv") if err != nil { - return err + return &TempFileError{err} } _, err = io.Copy(tempFile, r) if err != nil { - return err + return &CopyError{err} } return OpenFile(tempFile.Name()) @@ -110,18 +110,23 @@ func runBrowserCommand(commands, url string) error { commandList := strings.Split(commands, commandSeparator) var err error + var lastCommand string for _, command := range commandList { cmd := browserCommand(command, url) // Keep running commands from left to right until one of them exits // successfully. err = cmd.Run() - if err == nil || cmd.ProcessState.ExitCode() == 0 { - return err + if err == nil { + return nil + } else if cmd.ProcessState.ExitCode() == 0 { + return &ExecZeroError{command, err} } + + lastCommand = command } - return err + return &ExecError{lastCommand, err} } // browserCommand sets up an exec.Cmd to run command, attaching Stdout and |