bash-completion: complete -{i,b} when git (not rsync) used for repo

When git is used for repo, no file SLACKBUILDS.TXT exists.
In this case complete -{i,b} by find package directories
in $REPO_ROOT/$REPO_NAME/ directory.
This commit is contained in:
Sergey V 2016-09-24 23:34:18 +03:00
parent 4d0874712b
commit 134a57b601

View File

@ -65,10 +65,20 @@ _sbopkg()
esac
done
if [ ! -r "$REPO_ROOT/$REPO_NAME/$REPO_BRANCH/SLACKBUILDS.TXT" ]; then
return 0
if [ -d "$QUEUEDIR" ]; then
local queues=($(cd $QUEUEDIR; compgen -f -X "!*.sqf" -- "$cur"))
fi
if [ -r "$REPO_ROOT/$REPO_NAME/$REPO_BRANCH/SLACKBUILDS.TXT" ]; then
COMPREPLY=($(sed -ne "/^SLACKBUILD NAME: $cur/{s/^SLACKBUILD NAME: //;p}" \
$REPO_ROOT/$REPO_NAME/$REPO_BRANCH/SLACKBUILDS.TXT)
${queues[@]})
elif [ -d "$REPO_ROOT/$REPO_NAME/" ]; then
COMPREPLY=($(find $REPO_ROOT/$REPO_NAME \
\! -path $REPO_ROOT/$REPO_NAME/'.git/*' \
-mindepth 2 -maxdepth 2 \
-type d -name $cur\* \
-printf '%f\n')
${queues[@]})
fi
COMPREPLY=( $( sed -ne "/^SLACKBUILD NAME: $cur/{s/^SLACKBUILD NAME: //;p}"\
$REPO_ROOT/$REPO_NAME/$REPO_BRANCH/SLACKBUILDS.TXT )
$( cd $QUEUEDIR; compgen -f -X "!*.sqf" -- "$cur" ) )
} && complete -o filenames -F _sbopkg sbopkg