bash-completion/install-completions
2011-04-25 14:12:46 +02:00

76 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# install relevant completions, by sourcing every scriptlet
# found in a given directory, and symlinking those matching
# an installed command to another directory
have()
{
PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin type $1 &>/dev/null
}
usage()
{
echo "usage: $0 <completion_dir> [installation_dir]"
}
while getopts ":h" flag; do
case $flag in
h) usage; exit 0;;
esac
done
shift $((OPTIND - 1))
completion_dir=$1
if [ -z "$completion_dir" ]; then
echo "missing completion directory"
usage
exit 1
fi
if [ ! -d $completion_dir ]; then
echo "invalid directory $completion_dir"
usage
exit 1
fi
installation_dir=$2
if [ ! -d $installation_dir ]; then
echo "invalid directory $installation_dir"
usage
exit 1
fi
# many scripts require this
shopt -s extglob
# and some require this also
UNAME=$(uname -s)
UNAME=${UNAME/CYGWIN_*/Cygwin}
case $UNAME in
Linux|GNU|GNU/*) USERLAND=GNU ;;
*) USERLAND=$UNAME ;;
esac
for script in $completion_dir/*; do
# reset completion
complete -r
# source script
source $script 2>/dev/null
# check completion output
output=$(complete -p)
if [ -z "$output" ]; then
continue
fi
if [ -n "$installation_dir" ]; then
ln -sf $script $installation_dir/$(basename $script)
else
echo "$script OK"
fi
done