Expand description
hop: a fuzzy-finder TUI to jump between git repositories and folders.
It is a Rust port of the git-repo-jumper tool: pick an entry, the path is
written to a file the shell wrapper reads to cd, and (for git repos) the
configured git tool is launched. On top of the original it adds in-app
management, three tabs (git repos / files and folders / archive), slugs for
a hop <slug> fast jump, sort modes and a marker plus picker for paths that
no longer exist.
The crate is organised in layers with dependencies pointing inward:
domain (entities and pure logic) is wrapped by storage (the
repository and git-client ports with their backends), then service
(business rules), and finally the cli and tui front ends. config
and util are leaf utilities. The binary (main.rs) is a thin
composition root over this library, which also lets the integration tests
exercise the public API.
Modules§
- cli
- CLI layer: the
clapparser and the composition root that dispatches to one handler per command. - config
- Application configuration (settings only; entries live in the repository).
- domain
- Domain layer: entities and pure logic, free of I/O, config and UI.
- keymap
- Configurable key bindings for hop’s own shortcuts.
- service
- Service layer: business rules over the storage ports.
- storage
- Storage layer: the repository and git-client ports and their backends.
- theme
- Framework-agnostic theming (colors, palette, glyphs, themes), re-exported
from the
ratadatoolkit so the rest of the crate can refer tocrate::themewithout naming the dependency at every call site. Framework-agnostic theming: colors, palette, glyphs and themes. - tui
- TUI front end: the tabbed list view, its key handling and its overlays.
- util
- Leaf utilities: filesystem paths, logging, external launchers, metadata.