diff --git a/README.md b/README.md new file mode 100644 index 0000000..284f076 --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# zsh-rust-git-prompt + +A bare-bones Git prompt for zsh implemented in Rust for speed (and as a learning exercise). + +Configuration is rudimentary because I figured “how often am I going to change the appearance of my Git prompt?” + +## Features + +* Automatically detects Git repositories and only displays the prompt when inside one. +* Includes the following Git status information: + * current branch + * commits ahead/behind remote + * number of stashes (if any) + * number of staged files (if any) + * number of changed files (if any) + * number of conflicting files (if any) + * number of untracked files (if any) + * number of ignored files (if any) +* Basic format configuration via constants in the code. +* Partial ANSI formatting support (currently only the ones I use). + +## Dependencies + +* Rust (compilation). +* Your favourite Nerd Font. + +## Installation + +* Install Rust. +* Install the relevant Nerd Font and set it as default in your terminal app. +* Clone this repo. +* `cargo build --release` +* `mv target/release/zsh-rust-git-prompt ` where `` is in `PATH`. +* Add this to your `.zshrc`: + + ```zsh + RPROMPT='$(git status --porcelain=v2 --branch --show-stash -z 2>/dev/null | zsh-rust-git-prompt)'` + ``` + + (Or `PROMPT` if you prefer, but it’s really designed more for `RPROMPT`.) + +## Configuration + +* Changing the configuration requires a rebuild (`cargo build --release`) and reinstall. +* The strings used to generate the various components of the status line can be modified by changing the constants at the top of `main.rs`. +* The format of the status line can be modified by changing the format strings at the bottom of `main.rs`. +* There is only partial support for ANSI formatting codes at present, provided by the `*_style()` functions.