/git-prompt

A fast git prompt for bash, zsh, fish...

Primary LanguageHaskellBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Git-prompt

GitPrompt is an utility that, from a local git repository, renders information into a string suitable to be embedded in the shell prompt. It is written in Haskell.

Build

To build the package run the following commands:

cabal install --only-dep
runhaskell Setup configure --user
runhaskell Setup build
runhaskell Setup install

or

stack build
stack install

This will build and install the binary GitPrompt in either ~/.cabal/bin/ or ~/.local/bin/ directory.

Building GitPrompt Statically

To statically build GitPrompt, you can use the following command:

stack build --flag GitPrompt:StaticBuild
stack install

This command will instruct Stack to build GitPrompt with the StaticBuild flag, which will create a static binary. The binary will include all necessary dependencies, making it more self-contained and easier to distribute.

Usage

GitPrompt!

Usage: GitPrompt [-p|--path PATH] [-t|--theme COLOR] [-s|--short] [-V|--version]

Available options:
  -h,--help                Show this help text
  -p,--path PATH           Specify the git-rository path ($PWD by default)
  -t,--theme COLOR         Specify the color theme
  -s,--short               Use short mode
  -V,--version             Print version

Bash

To use it with bash, configure the shell prompt as follow:

PS1='\u@\h :: \[\033[1;32m\]\w\[\033[0m\] $(~/.local/bin/GitPrompt --theme blue)\n-> '

Zsh

For zsh, try the following configuration in .zshrc:

autoload -U colors && colors
setopt promptsubst
local git_prompt='$(/root/.local/bin/GitPrompt --theme blue)'
PS1="%{$fg[green]%}%n@%m %{$fg[blue]%}%c ${git_prompt} %# "

Fish

For fish shell, define the following function in ~/.config/fish/function/fish_prompt.fish:

function fish_prompt --description 'Write out the prompt'
	
	set -l last_status $status
    set -l git_prompt (~/.local/bin/GitPrompt --theme blue)

	if not set -q __fish_prompt_normal
		set -g __fish_prompt_normal (set_color normal)
	end

	# PWD
	set_color $fish_color_cwd
	echo -n (prompt_pwd)
	set_color normal

	printf '%s '{"$git_prompt"} 

	if not test $last_status -eq 0
	set_color $fish_color_error
	end

	echo -n '$ '

end