hop/lib.rs
1//! hop: a fuzzy-finder TUI to jump between git repositories and folders.
2//!
3//! It is a Rust port of the `git-repo-jumper` tool: pick an entry, the path is
4//! written to a file the shell wrapper reads to `cd`, and (for git repos) the
5//! configured git tool is launched. On top of the original it adds in-app
6//! management, three tabs (git repos / files and folders / archive), slugs for
7//! a `hop <slug>` fast jump, sort modes and a marker plus picker for paths that
8//! no longer exist.
9//!
10//! The crate is organised in layers with dependencies pointing inward:
11//! [`domain`] (entities and pure logic) is wrapped by [`storage`] (the
12//! repository and git-client ports with their backends), then [`service`]
13//! (business rules), and finally the [`cli`] and [`tui`] front ends. [`config`]
14//! and [`util`] are leaf utilities. The binary (`main.rs`) is a thin
15//! composition root over this library, which also lets the integration tests
16//! exercise the public API.
17
18pub mod cli;
19pub mod config;
20pub mod domain;
21pub mod keymap;
22pub mod service;
23pub mod storage;
24pub mod tui;
25pub mod util;
26
27/// Framework-agnostic theming (colors, palette, glyphs, themes), re-exported
28/// from the `ratada` toolkit so the rest of the crate can refer to
29/// `crate::theme` without naming the dependency at every call site.
30pub use ratada::theme;