Match file paths against Unix style patterns called globs.
glob is a cross-platform, pure Nim implementation of globs that supports creating patterns, testing file paths, and walking through directories to find matching files or directories.
If you're unfamiliar with globs, they essentially let you use a simple language to describe what filenames you're looking for with wildcards, placeholders, and other pretty intuitive features.
You can find the full documentation here.
*
and ?
wildcards plus ranges, groups, & pattern matchingInstall using Nimble:
nimble install glob
Then import
and use:
import glob
const pattern = glob("src/**/*.nim")
assert "src/foo.nim".matches(pattern)
assert "src/lib.rs".matches(pattern).not
# directories are expanded by default
# so `src` and `src/**` are equivalent
for path in walkGlob("src"):
# every file in `src` or its subdirectories, lazily
echo path
# need the list now (eagerly)?
from sequtils import toSeq
echo toSeq(walkGlob("src/*.nim"))
To build glob
from source you'll need to install Nim and its package
manager Nimble.
git clone https://github.com/haltcase/glob.git
cd glob
src
, tests.nim
nimble test
Commits should follow the Conventional Commits standard, which allows for automated changelog generation.
Releases are deployed automatically when new tags are created. For collaborators on this project, please follow this process for releasing a new version:
glob.nimble
per semver.nimble prep_release
, which will update changelog.md
, commit changes
to glob.nimble
& changelog.md
, and create a new tag.git push --follow-tags
to ensure the tag is pushed along with the commit.release
workflow to deploy a new version of the docs
and create a release on GitHub.This project is open to contributions of all kinds! Please check and search the issues if you encounter a problem before opening a new one. Pull requests for improvements are also welcome — see the steps above for development.
MIT © Bo Lingen