зеркало из https://github.com/golang/dep.git
36 строки
859 B
Go
36 строки
859 B
Go
// Copyright 2017 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package gps
|
|
|
|
import (
|
|
"github.com/Masterminds/vcs"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// unwrapVcsErr recognizes *vcs.LocalError and *vsc.RemoteError, and returns a form
|
|
// preserving the actual vcs command output and error, in addition to the message.
|
|
// All other types pass through unchanged.
|
|
func unwrapVcsErr(err error) error {
|
|
var cause error
|
|
var out, msg string
|
|
|
|
switch t := err.(type) {
|
|
case *vcs.LocalError:
|
|
cause, out, msg = t.Original(), t.Out(), t.Error()
|
|
case *vcs.RemoteError:
|
|
cause, out, msg = t.Original(), t.Out(), t.Error()
|
|
|
|
default:
|
|
return err
|
|
}
|
|
|
|
if cause == nil {
|
|
cause = errors.New(out)
|
|
} else {
|
|
cause = errors.Wrap(cause, out)
|
|
}
|
|
return errors.Wrap(cause, msg)
|
|
}
|