aboutsummaryrefslogtreecommitdiffstats
path: root/browserenv.go
diff options
context:
space:
mode:
authorTeddy Wing2020-12-22 19:12:46 +0100
committerTeddy Wing2020-12-22 19:12:46 +0100
commita3fbf30512c30a8c9fac051063954f5a64eff9f3 (patch)
tree0e56773d6e7193b942b55e055adb879615fce2b5 /browserenv.go
parentb89d9ed327fe7689edd72bfec815d754a724b850 (diff)
downloadbrowserenv-a3fbf30512c30a8c9fac051063954f5a64eff9f3.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.go17
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