normalpath

package
v0.52.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2021 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package normalpath provides functions similar to filepath.

A normalized path is a cleaned and to-slash'ed path. A validated path validates that a path is relative and does not jump context.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Base

func Base(path string) string

Base is equivalent to filepath.Base.

Normalizes before returning.

func ByDir

func ByDir(paths ...string) map[string][]string

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

func Components(path string) []string

Components splits the path into it's components.

This calls filepath.Split repeatedly.

The path is expected to be normalized.

func ContainsPath added in v0.19.0

func ContainsPath(dirPath string, path string, pathType PathType) bool

ContainsPath returns true if the dirPath contains the path.

The path and value are expected to be normalized and validated if Relative is used. The path and value are expected to be normalized and absolute if Absolute is used.

For a given dirPath:

  • If path == PathType, dirPath does not contain the path.
  • If dirPath == PathType, the dirPath contains the path.
  • If dirPath is a directory that contains path, this returns true.

func Dir

func Dir(path string) string

Dir is equivalent to filepath.Dir.

Normalizes before returning.

func EqualsOrContainsPath added in v0.19.0

func EqualsOrContainsPath(value string, path string, pathType PathType) bool

EqualsOrContainsPath returns true if the value is equal to or contains the path.

The path and value are expected to be normalized and validated if Relative is used. The path and value are expected to be normalized and absolute if Absolute is used.

func Ext

func Ext(path string) string

Ext is equivalent to filepath.Ext.

Can return empty string.

func Join

func Join(paths ...string) string

Join is equivalent to filepath.Join.

Empty strings are ignored, Can return empty string.

Normalizes before returning otherwise.

func MapAllEqualOrContainingPathMap added in v0.31.0

func MapAllEqualOrContainingPathMap(m map[string]struct{}, path string, pathType PathType) map[string]struct{}

MapAllEqualOrContainingPathMap returns the paths in m that are equal to, or contain path, in a new map.

The path and keys in m are expected to be normalized and validated if Relative is used. The path and keys in m are expected to be normalized and absolute if Absolute is used.

If the map is empty, returns nil.

func MapAllEqualOrContainingPaths added in v0.19.0

func MapAllEqualOrContainingPaths(m map[string]struct{}, path string, pathType PathType) []string

MapAllEqualOrContainingPaths returns the matching paths in the map in a sorted slice.

The path and keys in m are expected to be normalized and validated if Relative is used. The path and keys in m are expected to be normalized and absolute if Absolute is used.

If the map is empty, returns nil.

func MapHasEqualOrContainingPath added in v0.19.0

func MapHasEqualOrContainingPath(m map[string]struct{}, path string, pathType PathType) bool

MapHasEqualOrContainingPath returns true if the path matches any file or directory in the map.

The path and keys in m are expected to be normalized and validated if Relative is used. The path and keys in m are expected to be normalized and absolute if Absolute is used.

If the map is empty, returns false.

func Normalize

func Normalize(path string) string

Normalize normalizes the given path.

This calls filepath.Clean and filepath.ToSlash on the path. If the path is "" or ".", this returns ".".

func NormalizeAndAbsolute added in v0.19.0

func NormalizeAndAbsolute(path string) (string, error)

NormalizeAndAbsolute normalizes the path and makes it absolute.

func NormalizeAndTransformForPathType added in v0.19.0

func NormalizeAndTransformForPathType(path string, pathType PathType) (string, error)

NormalizeAndTransformForPathType calls NormalizeAndValidate for relative paths, and NormalizeAndAbsolute for absolute paths.

func NormalizeAndValidate

func NormalizeAndValidate(path string) (string, error)

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

func Rel(basepath string, targpath string) (string, error)

Rel is equivalent to filepath.Rel.

Can return empty string, especially on error.

Normalizes before returning otherwise.

func StripComponents added in v0.19.0

func StripComponents(path string, countUint32 uint32) (string, bool)

StripComponents strips the specified number of components.

Path expected to be normalized. Returns false if the path does not have more than the specified number of components.

func Unnormalize

func Unnormalize(path string) string

Unnormalize unnormalizes the given path.

This calls filepath.FromSlash on the path. If the path is "", this returns "".

func ValidatePathComponent added in v0.25.0

func ValidatePathComponent(component string) error

ValidatePathComponent validates that the string is a valid component of a path, e.g. it can be Joined and form a valid path.

func ValidatePathComponents added in v0.25.0

func ValidatePathComponents(components ...string) error

ValidatePathComponents validates that all the strings are valid components of a path, e.g. they can be Joined and form a valid path.

func ValidatePathsNormalizedValidatedUnique added in v0.45.0

func ValidatePathsNormalizedValidatedUnique(paths []string) error

ValidatePathsNormalizedValidatedUnique validates the file or diretory paths are normalized and validated, and not duplicated.

Types

type Error

type Error struct {
	Path string
	Err  error
}

Error is a path error.

func NewError

func NewError(path string, err error) *Error

NewError returns a new Error.

func (*Error) Error

func (e *Error) Error() string

Error implements error.

func (*Error) Is added in v0.25.0

func (e *Error) Is(err error) bool

Is implements errors.Is for Error.

func (*Error) Unwrap added in v0.25.0

func (e *Error) Unwrap() error

Unwrap implements errors.Unwrap for Error.

type PathType added in v0.19.0

type PathType int

PathType is a terminate type for path comparisons.

const (
	// Relative is the PathType for normalized and validated paths.
	Relative PathType = 1
	// Absolute is the PathType for normalized and absolute paths.
	Absolute PathType = 2
)

func (PathType) Separator added in v0.19.0

func (t PathType) Separator() string

Separator gets the string value of the separator.

TODO: rename to Terminator if we keep this TODO: we should probably refactor so we never need to use absolute paths at all this could be accomplished if we could for ExternalPathToRelPath on buckets

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL