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 fs.FS, a range of alternative filesystems as well as custom filesystems are supported.
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.