aboutsummaryrefslogtreecommitdiffstats
path: root/error.go
diff options
context:
space:
mode:
Diffstat (limited to 'error.go')
-rw-r--r--error.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/error.go b/error.go
new file mode 100644
index 0000000..d90d1b8
--- /dev/null
+++ b/error.go
@@ -0,0 +1,76 @@
+package browserenv
+
+import "fmt"
+
+const errorPrefix = "browserenv: "
+
+// CopyError represents a failure to copy data.
+type CopyError struct {
+ err error
+}
+
+func (e *CopyError) Error() string {
+ return fmt.Sprintf(errorPrefix+"can't copy from reader: %v", e.err)
+}
+
+func (e *CopyError) Unwrap() error { return e.err }
+
+// ExecError results from executing an external command.
+type ExecError struct {
+ command string
+ err error
+}
+
+func (e *ExecError) Error() string {
+ return fmt.Sprintf(
+ errorPrefix+"failed to run BROWSER command %q: %v",
+ e.command,
+ e.err,
+ )
+}
+
+func (e *ExecError) Unwrap() error { return e.err }
+
+// ExecZeroError results from executing an external command that produces an
+// error with an exit code of 0.
+type ExecZeroError struct {
+ command string
+ err error
+}
+
+func (e *ExecZeroError) Error() string {
+ return fmt.Sprintf(
+ errorPrefix+"error running command %q: %v",
+ e.command,
+ e.err,
+ )
+}
+
+func (e *ExecZeroError) Unwrap() error { return e.err }
+
+// PathResolutionError means the given path couldn't be resolved.
+type PathResolutionError struct {
+ path string
+ err error
+}
+
+func (e *PathResolutionError) Error() string {
+ return fmt.Sprintf(
+ errorPrefix+"can't resolve path for %q: %v",
+ e.path,
+ e.err,
+ )
+}
+
+func (e *PathResolutionError) Unwrap() error { return e.err }
+
+// TempFileError corresponds to an error while creating a temporary file.
+type TempFileError struct {
+ err error
+}
+
+func (e *TempFileError) Error() string {
+ return fmt.Sprintf(errorPrefix+"can't create temporary file: %v", e.err)
+}
+
+func (e *TempFileError) Unwrap() error { return e.err }