Skip to content

Commit

Permalink
Added fossil plugin.
Browse files Browse the repository at this point in the history
  • Loading branch information
jgmdev committed May 10, 2016
1 parent 0ebe359 commit 2bce3b1
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 0 deletions.
7 changes: 7 additions & 0 deletions plugins/fossil/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## Fossil Plugin

This plugin adds completion support and prompt for fossil repositories.
The prompt will display the current branch and status been dirty or clean.

### CONTRIBUTOR
- Jefferson González ([jgmdev](https://github.com/jgmdev))
89 changes: 89 additions & 0 deletions plugins/fossil/fossil.plugin.zsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
_FOSSIL_PROMPT=""

# Prefix at the very beginning of the prompt, before the branch name
ZSH_THEME_FOSSIL_PROMPT_PREFIX="%{$fg_bold[blue]%}fossil:(%{$fg_bold[red]%}"

# At the very end of the prompt
ZSH_THEME_FOSSIL_PROMPT_SUFFIX="%{$fg_bold[blue]%})"

# Text to display if the branch is dirty
ZSH_THEME_FOSSIL_PROMPT_DIRTY=" %{$fg_bold[red]%}✖"

# Text to display if the branch is clean
ZSH_THEME_FOSSIL_PROMPT_CLEAN=" %{$fg_bold[green]%}✔"

function fossil_prompt_info () {
local _OUTPUT=`fossil branch 2>&1`
local _STATUS=`echo $_OUTPUT | grep "use --repo"`
if [ "$_STATUS" = "" ]; then
local _EDITED=`fossil changes`
local _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
local _BRANCH=`echo $_OUTPUT | grep "* " | sed 's/* //g'`

if [ "$_EDITED" != "" ]; then
_EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
fi

echo "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
"$_BRANCH" \
"$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
"$_EDITED_SYM"\
"%{$reset_color%}"
fi
}

function _fossil_get_command_list () {
fossil help -a | grep -v "Usage|Common|This is"
}

function _fossil () {
local context state state_descr line
typeset -A opt_args

_arguments \
'1: :->command'\
'2: :->subcommand'

case $state in
command)
local _OUTPUT=`fossil branch 2>&1 | grep "use --repo"`
if [ "$_OUTPUT" = "" ]; then
compadd `_fossil_get_command_list`
else
compadd clone init import help version
fi
;;
subcommand)
if [ "$words[2]" = "help" ]; then
compadd `_fossil_get_command_list`
else
compcall -D
fi
;;
esac
}

function _fossil_prompt () {
local current=`echo $PROMPT $RPROMPT | grep fossil`

if [ "$_FOSSIL_PROMPT" = "" -o "$current" = "" ]; then
local _prompt=${PROMPT}
local _rprompt=${RPROMPT}

local is_prompt=`echo $PROMPT | grep git`

if [ "$is_prompt" = "" ]; then
export RPROMPT="$_rprompt"'$(fossil_prompt_info)'
else
export PROMPT="$_prompt"'$(fossil_prompt_info) '
fi

_FOSSIL_PROMPT="1"
fi
}

compdef _fossil fossil

autoload -U add-zsh-hook

add-zsh-hook precmd _fossil_prompt

0 comments on commit 2bce3b1

Please sign in to comment.