GoReleaser Logo

fileglob

A file globbing library.

Release Software License GitHub Actions Codecov branch Go Report Card Go Doc Powered By: GoReleaser

## What `fileglob` is a glob library that uses [gobwas/glob](https://github.com/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\}/\*` and `fileglob.QuoteMeta(pattern)`) By also building on top of `fs.FS`, a range of alternative filesystems as well as custom filesystems are supported. ## Why [gobwas/glob](https://github.com/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](https://github.com/goreleaser/fileglob/issues/232). So we decided to implement it ourselves, a little bit based on how [mattn/go-zglob](http://github.com/mattn/go-zglob) works.