Releases: bmatcuk/doublestar
Fixed Escaped Meta in the "Base" of the Pattern
If the "base" of a pattern (ie, everything up to the first path slash before any meta characters) contains an escaped meta character, doublestar would fail to glob any files.
Thanks to @tdurieux for finding and fixing this bug!
Breaking-ish Change
I've updated SplitPattern
to unescape meta characters in the first returned string. I suspect this shouldn't cause issues for anyone because, if anyone was using this function, they've probably either never passed a pattern with escaped meta characters, or hand-rolled an unescape method to fix the bug - which will now be a no-op for them.
What's Changed
New Contributors
Full Changelog: v4.7.1...v4.8.0
Fixed FilepathGlob("")
To be consistent with filepath.Glob
, FilepathGlob("")
returns nil.
Added MatchUnvalidated, PathMatchUnvalidated
These functions provide a small performance improvement in cases where you don't care about whether or not the pattern is valid (maybe because you already ran ValidatePattern
).
Fixed Match bug with patterns like `a/**/`
Added WithNoFollow
Added a WithNoFollow
option for Glob, GlobWalk, and FilepathGlob that will cause doublestar to not follow symlinks. However, note that there is a caveat due to io/fs limitations: if the pattern mentions a symlink before any meta characters, those symlinks will be followed. For example: path/to/symlink/*
will follow the symlink, assuming it is valid and links to a directory. path/**
and path/*/symlink/*
will not follow the symlink.
Added WithFilesOnly
Added a new option for Glob, GlobWalk, and FilepathGlob called WithFilesOnly
that will cause these functions to only return files. For example, a pattern such as folder/*
will only return the files inside the folder, and not any directories. Note that symlinks to directories are considered directories for this purpose.
Added WithFailOnPatternNotExist
Added the option WithFailOnPatternNotExist
to Glob, GlobWalk, and FilepathGlob. This option will cause doublestar to abort if the pattern references a path that does not exist, for example, nonexistent/path/*
.
Fixed Glob Bug With Pattern That Has Nonexistent Path And WithFailOnIOErrors
If the WithFailOnIOErrors
option was set and the pattern contained a reference to a nonexistent path (such as nonexistent/path/*
), Glob would return ErrNotExist
. It now returns an empty result with no error as expected.
For anyone that would prefer that doublestar returned an error, I'll be adding that as a feature (and a separate option) later.
Added Support for GlobOptions
This release adds options to Glob
, GlobWalk
, and FilepathGlob
. At the moment, the only option is WithFailOnIOErrors
that will cause doublestar to fail and return an error if it encounters any IO errors. It can be used like:
doublestar.Glob(fsys, pattern, WithFailOnIOErrors())
Thanks @fho!
Added Support for SkipDir to GlobWalk
Your callback to GlobWalk can now return SkipDir which functions as it does in the standard library: if the current path is a directory, GlobWalk will not recurse into it. If the current path is not a directory, GlobWalk will stop processing the parent directory.