Documentation ¶
Overview ¶
Package storagepath provides functions similar to filepath.
Note that storage depends on storagepath, not the other way around.
Index ¶
- Variables
- func Base(path string) string
- func ByDir(paths ...string) map[string][]string
- func Components(path string) []string
- func Dir(path string) string
- func ErrorEquals(err error, target error) bool
- func Ext(path string) string
- func Join(paths ...string) string
- func MapContainsMatch(m map[string]struct{}, path string) bool
- func MapMatches(m map[string]struct{}, path string) map[string]struct{}
- func Normalize(path string) string
- func NormalizeAndValidate(path string) (string, error)
- func Rel(basepath string, targpath string) (string, error)
- func Unnormalize(path string) string
- type Error
- type Transformer
- type TransformerOption
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNotRelative is the error returned if the path is not relative. ErrNotRelative = errors.New("expected to be relative") // ErrOutsideContextDir is the error returned if the path is outside the context directory. ErrOutsideContextDir = errors.New("is outside the context directory") )
Functions ¶
func ByDir ¶
ByDir maps the paths into a map from directory via Dir to the original paths.
The paths for each value slice will be sorted.
The path is expected to be normalized.
func Components ¶
Components splits the path into it's components.
This calls filepath.Split repeatedly.
The path is expected to be normalized.
func ErrorEquals ¶ added in v0.4.0
ErrorEquals returns true if err is an Error and err.Error == target.
func Join ¶
Join is equivalent to filepath.Join.
Empty strings are ignored, Can return empty string.
Normalizes before returning otherwise.
func MapContainsMatch ¶
MapContainsMatch returns true if the path matches any file or directory in the map.
The path and all keys in m are expected to be normalized and validated.
For a given key x:
- If x == ".", the path always matches.
- If x == path, the path matches.
- If x is a directory that contains path, the path matches.
If the map is empty, returns false.
All files are directories in the map are expected to be normalized. The path is normalized within this call.
func MapMatches ¶
MapMatches returns the matching paths in the map.
The path and all keys in m are expected to be normalized and validated.
For a given key x:
- If x == ".", the path always matches.
- If x == path, the path matches.
- If x is a directory that contains path, the path matches.
If the map is empty, returns empty map.
All files are directories in the map are expected to be normalized. The path is normalized within this call.
func Normalize ¶
Normalize normalizes the given path.
This calls filepath.Clean and filepath.ToSlash on the path. If the path is "" or ".", this returns ".".
func NormalizeAndValidate ¶
NormalizeAndValidate normalizes and validates the given path.
This calls Normalize on the path. Returns error if the path is not relative or jumps context. This can be used to validate that paths are valid to use with Buckets. The error message is safe to pass to users.
func Rel ¶
Rel is equivalent to filepath.Rel.
Can return empty string, especially on error.
Normalizes before returning otherwise.
func Unnormalize ¶
Unnormalize unnormalizes the given path.
This calls filepath.FromSlash on the path. If the path is "", this returns "".
Types ¶
type Error ¶ added in v0.4.0
Error is a path error.
type Transformer ¶
type Transformer interface { // Transform transforms and filters the path. // // If the path is filtered, this will return empty and false. // Returns the potentially transformed path. // // The path is expected to be normalized. Transform(path string) (string, bool) }
Transformer transforms and filters paths.
func NewTransformer ¶
func NewTransformer(options ...TransformerOption) Transformer
NewTransformer returns a new Transformer.
type TransformerOption ¶
type TransformerOption func(*transformer)
TransformerOption is an option for a new Transformer.
func WithExactPath ¶
func WithExactPath(exactPath string) TransformerOption
WithExactPath returns WithMatcher() for path == exactPath.
exactPath is normalized within this call.
func WithExt ¶
func WithExt(ext string) TransformerOption
WithExt returns WithMatcher() for Ext(path) == ext.
func WithMatcher ¶
func WithMatcher(matcher func(name string) bool) TransformerOption
WithMatcher returns a TransformerOption with the given matcher.
Transform will return false and no path if no matcher returns true. If there are no matchers, there is no processing of match rules. Multiple matchers are or'ed. Applied after strip components. Paths are normalized before passing to a matcher.
The default is no matchers.
func WithStripComponents ¶
func WithStripComponents(stripComponentCount uint32) TransformerOption
WithStripComponents strips the given number of components from a path.
ApplyOptions will return false and no path if a file does not have this many components.
The default is 0.