initial commit of file from CVS for e-smith-lib-compspec on Wed 12 Jul 08:59:06 BST 2023
This commit is contained in:
0
root/etc/e-smith/events/e-smith-lib-compspec-update/.gitignore
vendored
Normal file
0
root/etc/e-smith/events/e-smith-lib-compspec-update/.gitignore
vendored
Normal file
124
root/etc/profile.d/e-smith-lib_compspec.sh
Normal file
124
root/etc/profile.d/e-smith-lib_compspec.sh
Normal file
@@ -0,0 +1,124 @@
|
||||
_esmith_signal-event ()
|
||||
{
|
||||
if [ ! $(which $1 2>/dev/null) ]; then return 0; fi
|
||||
local cur; cur=${COMP_WORDS[$COMP_CWORD]}
|
||||
|
||||
case $COMP_CWORD in
|
||||
1)
|
||||
COMPREPLY=( $(find /etc/e-smith/events/ -maxdepth 1 -type d \
|
||||
\( -name 'actions' -prune -o \
|
||||
-name "$cur*" -printf "%f\n" \)) )
|
||||
;;
|
||||
*) ;;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
complete -F _esmith_signal-event signal-event
|
||||
|
||||
|
||||
_esmith_expand-template ()
|
||||
{
|
||||
if [ ! $(which $1 2>/dev/null) ]; then return 0; fi
|
||||
local cur; cur=$(echo ${COMP_WORDS[$COMP_CWORD]}| sed 's/\./\\./g')
|
||||
case $COMP_CWORD in
|
||||
1) # need to distinguish between templates and fragments
|
||||
COMPREPLY=( $(find /etc/e-smith/templates \
|
||||
/etc/e-smith/templates-custom \
|
||||
/etc/e-smith/templates.metadata \
|
||||
-regex "/etc/e-smith/templates\(-custom\|.metadata\)?$cur.*" \
|
||||
-printf "[ -f /%P ] && echo /%P\n" \
|
||||
| sh | uniq) )
|
||||
;;
|
||||
*) ;;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
complete -F _esmith_expand-template expand-template
|
||||
|
||||
|
||||
_esmith_db ()
|
||||
{
|
||||
if [ ! $(which $1 2>/dev/null) ]; then return 0; fi
|
||||
local cur; cur=${COMP_WORDS[$COMP_CWORD]}
|
||||
|
||||
local Commands=$(/sbin/e-smith/db 2>&1 | grep "dbfile" | awk '{print $3}')
|
||||
|
||||
case $COMP_CWORD in
|
||||
1) # config file
|
||||
COMPREPLY=( $(find /home/e-smith /home/e-smith/db -maxdepth 1 -type f \
|
||||
\( -name '.*' -prune -o \
|
||||
-name "$cur*" -printf "%f\n" \)) )
|
||||
;;
|
||||
2) # subcommand
|
||||
COMPREPLY=( $(/sbin/e-smith/db 2>&1 | grep "dbfile"|awk '{print $3}' \
|
||||
|grep "^$cur" ) )
|
||||
;;
|
||||
3) # key
|
||||
local file; file=${COMP_WORDS[1]}
|
||||
local cmd; cmd=${COMP_WORDS[2]}
|
||||
local haskey
|
||||
|
||||
echo "$Commands" | grep -q "^$cmd"
|
||||
if [ $? -eq 1 ] ; then
|
||||
COMPREPLY+=("Unknown command '$cmd'" ""); return 0
|
||||
fi
|
||||
|
||||
haskey=$(/sbin/e-smith/db 2>&1 | grep "dbfile $cmd" | awk '{print $4}')
|
||||
if [ -n "$haskey" ]; then
|
||||
COMPREPLY=( $(/sbin/e-smith/db $file keys |grep "^$cur") )
|
||||
fi
|
||||
;;
|
||||
*) # type/prop/val
|
||||
local file; file=${COMP_WORDS[1]}
|
||||
local cmd; cmd=${COMP_WORDS[2]}
|
||||
local key; key=${COMP_WORDS[3]}
|
||||
local i; i=$COMP_CWORD
|
||||
local prev
|
||||
local valtype
|
||||
|
||||
echo "$Commands" | grep -q "^$cmd"
|
||||
if [ $? -eq 1 ] ; then
|
||||
COMPREPLY+=("Unknown command '$cmd'" ""); return 0
|
||||
fi
|
||||
|
||||
while [ "$valtype" == "..." ] || [ "$valtype" == "" ]; do
|
||||
prev=${COMP_WORDS[$[i-1]]}
|
||||
PAT='$3'
|
||||
for j in $(seq 4 $[i+1]); do PAT="$PAT,\$$j"; done
|
||||
valtype=$(/sbin/e-smith/db 2>&1 | awk "{print $PAT}" \
|
||||
| grep "^$cmd" | awk "{print \$$[i-1]}")
|
||||
i=$[i-2]
|
||||
done
|
||||
case $(echo "$valtype" |sed -e 's/[][0-9]//g') in
|
||||
"type") COMPREPLY=( $(/sbin/e-smith/db $file gettype $key \
|
||||
| grep "^$cur") )
|
||||
;;
|
||||
"prop")
|
||||
COMPREPLY=( $(/sbin/e-smith/db $file printprop $key \
|
||||
| sed -e 's/=.*//' | grep "^$cur") )
|
||||
;;
|
||||
"val") COMPREPLY=( $(/sbin/e-smith/db $file getprop $key $prev \
|
||||
| grep "^$cur"))
|
||||
;;
|
||||
*) ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
complete -F _esmith_db db
|
||||
|
||||
|
||||
_esmith_config ()
|
||||
{
|
||||
cmd=$(echo $1 | sed -e 's/config$/db/')
|
||||
COMP_WORDS=($cmd ${COMP_WORDS[*]})
|
||||
COMP_WORDS[1]=configuration
|
||||
COMP_CWORD=$[ $COMP_CWORD + 1 ]
|
||||
_esmith_db $*
|
||||
return $?
|
||||
}
|
||||
complete -F _esmith_config config
|
Reference in New Issue
Block a user