Added fossil plugin.
This commit is contained in:
parent
0ebe35968c
commit
2bce3b1f58
7
plugins/fossil/README.md
Normal file
7
plugins/fossil/README.md
Normal file
|
@ -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
plugins/fossil/fossil.plugin.zsh
Normal file
89
plugins/fossil/fossil.plugin.zsh
Normal file
|
@ -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
|
Loading…
Reference in a new issue