...
1 package module
2
3 import (
4 "fmt"
5 )
6
7
8 type ModuleError struct {
9 Path string
10 Version string
11 Err error
12 }
13
14 func (e *ModuleError) Error() string {
15 if v, ok := e.Err.(*InvalidVersionError); ok {
16 return fmt.Sprintf("%s@%s: invalid version: %v", e.Path, v.Version, v.Err)
17 }
18 if e.Version != "" {
19 return fmt.Sprintf("%s@%s: %v", e.Path, e.Version, e.Err)
20 }
21 return fmt.Sprintf("module %s: %v", e.Path, e.Err)
22 }
23
24 func (e *ModuleError) Unwrap() error { return e.Err }
25
26
27
28
29
30
31 type InvalidVersionError struct {
32 Version string
33 Err error
34 }
35
36 func (e *InvalidVersionError) Error() string {
37 return fmt.Sprintf("version %q invalid: %s", e.Version, e.Err)
38 }
39
40 func (e *InvalidVersionError) Unwrap() error { return e.Err }
41
42
43
44
45 type InvalidPathError struct {
46 Kind string
47 Path string
48 Err error
49 }
50
51 func (e *InvalidPathError) Error() string {
52 return fmt.Sprintf("malformed %s path %q: %v", e.Kind, e.Path, e.Err)
53 }
54
55 func (e *InvalidPathError) Unwrap() error { return e.Err }
56
View as plain text