{"id":22994019,"url":"https://github.com/snivilised/agenor","last_synced_at":"2025-04-02T12:40:36.852Z","repository":{"id":236974329,"uuid":"793538739","full_name":"snivilised/agenor","owner":"snivilised","description":"🌀 concurrent directory walker","archived":false,"fork":false,"pushed_at":"2025-02-03T13:28:38.000Z","size":926,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-08T03:41:22.710Z","etag":null,"topics":["directory-traversal","directory-tree","filesystem","go","golang","golib","i18n","walk"],"latest_commit_sha":null,"homepage":"","language":"Go","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/snivilised.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2024-04-29T12:13:53.000Z","updated_at":"2025-01-04T19:23:45.000Z","dependencies_parsed_at":"2024-05-20T20:17:09.357Z","dependency_job_id":"89bad4fe-cb94-4354-9fe5-269355ddfa1f","html_url":"https://github.com/snivilised/agenor","commit_stats":null,"previous_names":["snivilised/traverse","snivilised/agenor"],"tags_count":6,"template":false,"template_full_name":"snivilised/astrolib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snivilised%2Fagenor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snivilised%2Fagenor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snivilised%2Fagenor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snivilised%2Fagenor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snivilised","download_url":"https://codeload.github.com/snivilised/agenor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246819317,"owners_count":20839086,"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":["directory-traversal","directory-tree","filesystem","go","golang","golib","i18n","walk"],"created_at":"2024-12-15T05:16:37.179Z","updated_at":"2025-04-02T12:40:36.829Z","avatar_url":"https://github.com/snivilised.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌀 agenor: ___rx observable concurrent directory walker___\n\n[![A B](https://img.shields.io/badge/branching-commonflow-informational?style=flat)](https://commonflow.org)\n[![A B](https://img.shields.io/badge/merge-rebase-informational?style=flat)](https://git-scm.com/book/en/v2/Git-Branching-Rebasing)\n[![A B](https://img.shields.io/badge/branch%20history-linear-blue?style=flat)](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/managing-a-branch-protection-rule)\n[![Go Reference](https://pkg.go.dev/badge/github.com/snivilised/agenor.svg)](https://pkg.go.dev/github.com/snivilised/agenor)\n[![Go report](https://goreportcard.com/badge/github.com/snivilised/agenor)](https://goreportcard.com/report/github.com/snivilised/agenor)\n[![Coverage Status](https://coveralls.io/repos/github/snivilised/agenor/badge.svg?branch=main)](https://coveralls.io/github/snivilised/agenor?branch=main\u0026kill_cache=1)\n[![Astrolib Continuous Integration](https://github.com/snivilised/agenor/actions/workflows/ci-workflow.yml/badge.svg)](https://github.com/snivilised/agenor/actions/workflows/ci-workflow.yml)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit)\n[![A B](https://img.shields.io/badge/commit-conventional-commits?style=flat)](https://www.conventionalcommits.org/)\n\n\u003c!-- MD013/Line Length --\u003e\n\u003c!-- MarkDownLint-disable MD013 --\u003e\n\n\u003c!-- MD014/commands-show-output: Dollar signs used before commands without showing output mark down lint --\u003e\n\u003c!-- MarkDownLint-disable MD014 --\u003e\n\n\u003c!-- MD033/no-inline-html: Inline HTML --\u003e\n\u003c!-- MarkDownLint-disable MD033 --\u003e\n\n\u003c!-- MD040/fenced-code-language: Fenced code blocks should have a language specified --\u003e\n\u003c!-- MarkDownLint-disable MD040 --\u003e\n\n\u003c!-- MD028/no-blanks-blockquote: Blank line inside blockquote --\u003e\n\u003c!-- MarkDownLint-disable MD028 --\u003e\n\n\u003cp align=\"left\"\u003e\n  \u003ca href=\"https://go.dev\"\u003e\u003cimg src=\"resources/images/go-logo-light-blue.png\" width=\"50\" alt=\"go.dev\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## 🔰 Introduction\n\nThis project provides a directory walker in the same vein as the ___Walk___ in standard library ___filepath___, but provides many features in addition to the basic facility of simply navigating. These include, but not limited to the following:\n\n- Comprehensive filtering with regex/glob patterns\n- Resume, from a previous navigation that was prematurely terminated (typically via a ctrl-c interrupt), or cancellation via a context; this is particularly useful if the client program runs heavy IO bound tasks resulting in relatively long batch runs\n- Hibernation, this allows for client defined action to be invoked for eligible file/folders encountered during navigation, when a particular condition occurs; as opposed to invoking the client action for every file/folder from the root onwards. The navigator starts off in a hibernated state, then when the condition occurs, the navigator awakens and begins invoking the client action for eligible nodes.\n- Concurrent navigation implemented with a reactive model, using rx observables\n- Compatibility with ___os.fs___ file system\n- Ability to hook many aspects of the traversal process\n\n## 📚 Usage\n\n## 🎀 Features\n\n\u003cp align=\"left\"\u003e\n  \u003ca href=\"https://onsi.github.io/ginkgo/\"\u003e\u003cimg src=\"https://onsi.github.io/ginkgo/images/ginkgo.png\" width=\"100\" alt=\"ginkgo\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://onsi.github.io/gomega/\"\u003e\u003cimg src=\"https://onsi.github.io/gomega/images/gomega.png\" width=\"100\" alt=\"gomega\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n- unit testing with [Ginkgo](https://onsi.github.io/ginkgo/)/[Gomega](https://onsi.github.io/gomega/)\n- implemented with [🐍 Cobra](https://cobra.dev/) cli framework, assisted by [🐲 Cobrass](https://github.com/snivilised/cobrass)\n- i18n with [go-i18n](https://github.com/nicksnyder/go-i18n)\n- linting configuration and pre-commit hooks, (see: [linting-golang](https://freshman.tech/linting-golang/)).\n- uses [💥 lo](https://github.com/samber/lo)\n\n### 🌐 l10n Translations\n\nThis template has been setup to support localisation. The default language is `en-GB` with support for `en-US`. There is a translation file for `en-US` defined as __src/i18n/deploy/astrolib.active.en-US.json__. This is the initial translation for `en-US` that should be deployed with the app.\n\nMake sure that the go-i18n package has been installed so that it can be invoked as cli, see [go-i18n](https://github.com/nicksnyder/go-i18n) for installation instructions.\n\nTo maintain localisation of the application, the user must take care to implement all steps to ensure translate-ability of all user facing messages. Whenever there is a need to add/change user facing messages including error messages, to maintain this state, the user must:\n\n- define template struct (__xxxTemplData__) in __src/i18n/messages.go__ and corresponding __Message()__ method. All messages are defined here in the same location, simplifying the message extraction process as all extractable strings occur at the same place. Please see [go-i18n](https://github.com/nicksnyder/go-i18n) for all translation/pluralisation options and other regional sensitive content.\n\nFor more detailed workflow instructions relating to i18n, please see [i18n README](./resources/doc/i18n-README.md)\n\n### 📨 Message Bus\n\n- Contains an alternative version of [bus](https://github.com/mustafaturan/bus). The requirement for a bus implementation is based upon the need to create loosely coupled internal code. The original bus was designed with concurrency in mind so it uses locks to achieve thread safety. This aspect is surplus to requirements as all we need it for are synchronous scenarios, so it has been striped out.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnivilised%2Fagenor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnivilised%2Fagenor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnivilised%2Fagenor/lists"}