package filetree import "fmt" const ( ActionAdd FileAction = iota ActionRemove ) type FileAction int func (fa FileAction) String() string { switch fa { case ActionAdd: return "add" case ActionRemove: return "remove" default: return "" } } type PathError struct { Path string Action FileAction Err error } func NewPathError(path string, action FileAction, err error) PathError { return PathError{ Path: path, Action: action, Err: err, } } func (pe PathError) String() string { return fmt.Sprintf("unable to %s '%s': %+v", pe.Action.String(), pe.Path, pe.Err) }