diff --git a/etchosts/etchosts.go b/etchosts/etchosts.go index b69d0d6..7330f30 100644 --- a/etchosts/etchosts.go +++ b/etchosts/etchosts.go @@ -9,6 +9,7 @@ import ( "path" "strings" + "github.com/pkg/errors" log "github.com/sirupsen/logrus" ) @@ -42,14 +43,14 @@ func (eh *EtcHosts) WriteEntries(ipsToNames map[string][]string) error { // We do not want to create the hosts file; if it's not there, we probably have the wrong path. etcHosts, err := os.OpenFile(hostsPath, os.O_RDWR, 0644) if err != nil { - return fmt.Errorf("could not open %s for reading: %s", hostsPath, err) + return errors.Wrapf(err, "could not open %s for reading", hostsPath) } defer etcHosts.Close() // create tmpfile in same folder as tmp, err := ioutil.TempFile(path.Dir(hostsPath), "etchosts") if err != nil { - return fmt.Errorf("could not create tempfile") + return errors.Wrap(err, "could not create tempfile") } // remove tempfile; this might fail if we managed to move it, which is ok @@ -98,7 +99,7 @@ func (eh *EtcHosts) writeEntries(orig io.Reader, dest io.Writer, ipsToNames map[ } } if err := scanner.Err(); err != nil { - return fmt.Errorf("error reading hosts file: %s", err) + return errors.Wrap(err, "error reading hosts file") } // append remaining entries to file @@ -117,7 +118,7 @@ func (eh *EtcHosts) writeEntryWithBanner(tmp io.Writer, banner, ip string, names eh.Logger.Printf("writing entry for %s (%s)", ip, names) } if _, err := fmt.Fprintf(tmp, "%s\t%s\t%s\n", ip, strings.Join(names, " "), banner); err != nil { - return fmt.Errorf("error writing entry for %s: %s", ip, err) + return errors.Wrapf(err, "error writing entry for %s", ip) } } return nil @@ -125,12 +126,12 @@ func (eh *EtcHosts) writeEntryWithBanner(tmp io.Writer, banner, ip string, names func (eh *EtcHosts) movePreservePerms(src, dst *os.File) error { if err := src.Sync(); err != nil { - return fmt.Errorf("could not sync changes to %s: %s", src.Name(), err) + return errors.Wrapf(err, "could not sync changes to %s", src.Name()) } etcHostsInfo, err := dst.Stat() if err != nil { - return fmt.Errorf("could not stat %s: %s", dst.Name(), err) + return errors.Wrapf(err, "could not stat %s", dst.Name()) } if err = os.Rename(src.Name(), dst.Name()); err != nil { @@ -152,7 +153,7 @@ func (eh *EtcHosts) movePreservePerms(src, dst *os.File) error { // ensure we're not running with some umask that might break things if err := src.Chmod(etcHostsInfo.Mode()); err != nil { - return fmt.Errorf("could not chmod %s: %s", src.Name(), err) + return errors.Wrapf(err, "could not chmod %s", src.Name()) } // TODO: also keep user?