fileglob
A file globbing library.
What
fileglob
is a glob library that uses gobwas/glob underneath
and returns only matching files or direcories, depending on the configuration. Due to this great foundation, fileglob
supports:
- Asterisk wildcards (
*
) - Super-asterisk wildcards (
**
) - Single symbol wildcards (
?
) - Character list matchers with negation and ranges (
[abc]
,[!abc]
,[a-c]
) - Alternative matchers (
{a,b}
) - Nested globbing (
{a,[bc]}
) - Escapable wildcards (
\{a\}/\*
andfileglob.QuoteMeta(pattern)
)
By also building on top of spf13/afero, a range of alternative filesystems as well as custom filesystems are supported. For example, an in-memory filesystem can be used (fileglob.Glob("/a/b", fileglob.WithFs(afero.NewMemMapFs()))
):
Why
gobwas/glob is very well implemented: it has
a lexer, compiler, and all that, which seems like a better approach than most
libraries do: regex.
It doesn't have a Walk
method though, and we needed it
in a couple of places.
So we decided to implement it ourselves, a little bit based on how
mattn/go-zglob works.