pkg/guid: Improve error messages

Signed-off-by: Kevin Parsons <kevpar@microsoft.com>
This commit is contained in:
Kevin Parsons
2019-05-13 14:30:09 -07:00
parent 2dc6637e2c
commit b940a6f7ae
+6 -7
View File
@@ -13,7 +13,6 @@ import (
"strconv"
"strings"
"github.com/pkg/errors"
"golang.org/x/sys/windows"
)
@@ -115,36 +114,36 @@ func (g GUID) String() string {
// format.
func FromString(s string) (GUID, error) {
if len(s) != 36 {
return GUID{}, errors.New("invalid GUID format (length)")
return GUID{}, fmt.Errorf("invalid GUID %q", s)
}
if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {
return GUID{}, errors.New("invalid GUID format (dashes)")
return GUID{}, fmt.Errorf("invalid GUID %q", s)
}
var g GUID
data1, err := strconv.ParseUint(s[0:8], 16, 32)
if err != nil {
return GUID{}, errors.Wrap(err, "invalid GUID format (Data1)")
return GUID{}, fmt.Errorf("invalid GUID %q", s)
}
g.Data1 = uint32(data1)
data2, err := strconv.ParseUint(s[9:13], 16, 16)
if err != nil {
return GUID{}, errors.Wrap(err, "invalid GUID format (Data2)")
return GUID{}, fmt.Errorf("invalid GUID %q", s)
}
g.Data2 = uint16(data2)
data3, err := strconv.ParseUint(s[14:18], 16, 16)
if err != nil {
return GUID{}, errors.Wrap(err, "invalid GUID format (Data3)")
return GUID{}, fmt.Errorf("invalid GUID %q", s)
}
g.Data3 = uint16(data3)
for i, x := range []int{19, 21, 24, 26, 28, 30, 32, 34} {
v, err := strconv.ParseUint(s[x:x+2], 16, 8)
if err != nil {
return GUID{}, errors.Wrap(err, "invalid GUID format (Data4)")
return GUID{}, fmt.Errorf("invalid GUID %q", s)
}
g.Data4[i] = uint8(v)
}