{"id":13721717,"url":"https://github.com/haltcase/glob","last_synced_at":"2025-10-28T15:42:59.281Z","repository":{"id":52744399,"uuid":"134216140","full_name":"haltcase/glob","owner":"haltcase","description":"Pure Nim library for matching file paths against Unix style glob patterns.","archived":false,"fork":false,"pushed_at":"2024-02-27T15:57:45.000Z","size":551,"stargazers_count":61,"open_issues_count":3,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-23T17:15:31.792Z","etag":null,"topics":["filesystem","glob","glob-matching","hacktoberfest","match","pattern","walk"],"latest_commit_sha":null,"homepage":"https://glob.bolingen.me","language":"Nim","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/haltcase.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-21T04:02:42.000Z","updated_at":"2024-09-12T13:19:38.000Z","dependencies_parsed_at":"2024-02-27T17:07:41.917Z","dependency_job_id":null,"html_url":"https://github.com/haltcase/glob","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haltcase%2Fglob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haltcase%2Fglob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haltcase%2Fglob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haltcase%2Fglob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/haltcase","download_url":"https://codeload.github.com/haltcase/glob/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243997035,"owners_count":20380980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["filesystem","glob","glob-matching","hacktoberfest","match","pattern","walk"],"created_at":"2024-08-03T01:01:20.516Z","updated_at":"2025-10-28T15:42:59.213Z","avatar_url":"https://github.com/haltcase.png","language":"Nim","funding_links":[],"categories":["Text Processing"],"sub_categories":["Byte Size"],"readme":"# glob \u0026middot; [![nimble](https://flat.badgen.net/badge/available%20on/nimble/yellow)](https://nimble.directory/pkg/glob) ![license](https://flat.badgen.net/github/license/haltcase/glob) [![GitHub Actions](https://flat.badgen.net/github/checks/haltcase/glob)](https://github.com/haltcase/glob/actions)\n\n\u003e Match file paths against Unix style patterns called _globs_.\n\n_glob_ is a cross-platform, pure Nim implementation of [globs][wiki] that supports\ncreating patterns, testing file paths, and walking through directories to find\nmatching files or directories.\n\nIf you're unfamiliar with globs, they essentially let you use a simple language\nto describe what filenames you're looking for with wildcards, placeholders, and\nother pretty intuitive features.\n\nYou can find the full [documentation here](https://glob.bolingen.me/).\n\n## features\n\n* full glob support across platforms\n* all glob syntax: `*` and `?` wildcards plus ranges, groups, \u0026 pattern matching\n* efficient file system walking without unnecessary traversals\n* configurable iteration behavior with sane defaults\n* user defined filters for matching and directory traversal\n\n## installation \u0026 usage\n\nInstall using [Nimble][nimble]:\n\n```shell\nnimble install glob\n```\n\nThen `import` and use:\n\n```nim\nimport glob\n\nconst pattern = glob(\"src/**/*.nim\")\nassert \"src/foo.nim\".matches(pattern)\nassert \"src/lib.rs\".matches(pattern).not\n\n# directories are expanded by default\n# so `src` and `src/**` are equivalent\nfor path in walkGlob(\"src\"):\n  # every file in `src` or its subdirectories, lazily\n  echo path\n\n# need the list now (eagerly)?\nfrom sequtils import toSeq\necho toSeq(walkGlob(\"src/*.nim\"))\n```\n\n## development\n\nTo build `glob` from source you'll need to install [Nim][nim] and its package\nmanager [Nimble][nimble].\n\n1. Clone the repo: `git clone https://github.com/haltcase/glob.git`\n2. Move into the newly cloned directory: `cd glob`\n3. Make your changes: `src`, `tests.nim`\n4. Run tests: `nimble test`\n\nCommits should follow the [Conventional Commits][conventional] standard, which\nallows for automated changelog generation.\n\nReleases are deployed automatically when new tags are created. For collaborators\non this project, please follow this process for releasing a new version:\n\n1. Ensure tests are passing, as usual.\n2. Update the version in `glob.nimble` per [semver][semver].\n3. Run `nimble prep_release`, which will update `changelog.md`, commit changes\nto `glob.nimble` \u0026 `changelog.md`, and create a new tag.\n4. Run `git push --follow-tags` to ensure the tag is pushed along with the commit.\n5. GitHub Actions will take it from there: the new tag will trigger the\n[`release` workflow][release-wf] to deploy a new version of the docs\nand create a release on GitHub.\n\n## contributing\n\nThis project is open to contributions of all kinds! Please check and search\nthe [issues](https://github.com/haltcase/glob/issues) if you encounter a\nproblem before opening a new one. Pull requests for improvements are also\nwelcome \u0026mdash; see the steps above for [development](#development).\n\n## license\n\nMIT © [Bo Lingen](https://github.com/haltcase)\n\n[wiki]: https://en.wikipedia.org/wiki/Glob_(programming)\n[nim]: https://github.com/nim-lang/nim\n[nimble]: https://github.com/nim-lang/nimble\n[conventional]: https://www.conventionalcommits.org/en/v1.0.0/#summary\n[fugitive]: https://github.com/haltcase/fugitive\n[semver]: https://semver.org/\n[release-wf]: https://github.com/haltcase/glob/blob/master/.github/workflows/release.yml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaltcase%2Fglob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaltcase%2Fglob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaltcase%2Fglob/lists"}