bash-completion/install-completions
2009-09-20 22:12:18 +02:00

67 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
# 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 requires this
shopt -s extglob
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