this repo has no description
at master 55 lines 1.5 kB view raw
1package module 2 3import ( 4 "fmt" 5) 6 7// A ModuleError indicates an error specific to a module. 8type ModuleError struct { 9 Path string 10 Version string 11 Err error 12} 13 14func (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 24func (e *ModuleError) Unwrap() error { return e.Err } 25 26// An InvalidVersionError indicates an error specific to a version, with the 27// module path unknown or specified externally. 28// 29// A ModuleError may wrap an InvalidVersionError, but an InvalidVersionError 30// must not wrap a ModuleError. 31type InvalidVersionError struct { 32 Version string 33 Err error 34} 35 36func (e *InvalidVersionError) Error() string { 37 return fmt.Sprintf("version %q invalid: %s", e.Version, e.Err) 38} 39 40func (e *InvalidVersionError) Unwrap() error { return e.Err } 41 42// An InvalidPathError indicates a module, import, or file path doesn't 43// satisfy all naming constraints. See CheckPath, CheckImportPath, 44// and CheckFilePath for specific restrictions. 45type InvalidPathError struct { 46 Kind string // "module", "import", or "file" 47 Path string 48 Err error 49} 50 51func (e *InvalidPathError) Error() string { 52 return fmt.Sprintf("malformed %s path %q: %v", e.Kind, e.Path, e.Err) 53} 54 55func (e *InvalidPathError) Unwrap() error { return e.Err }