[JdeRobot] Bash completion for zeroc ice applications
Oscar Garcia
oscar.robotica at linaresdigital.com
Tue Apr 19 21:49:21 CEST 2016
Hi all,
I've always had the hassle of not having bash completion with the
jderobot components/drivers/programs, so, especially when typing the
argument --Ice.Config=<configuration file>, I had to do different tricks
to fill the gap.
I have developed a bash completion script that I hope help you end this
hassle.
It works with any executable file (not only binaries, scripts too) and
helps you choosing and remember zeroc ICE command line parameters and,
after typing "=", select an *.cfg file (warning, this happens with all
options, as TCP and UDP parameters too!).
This is the script (/etc/bash_completion.d/zeroc-ice.sh):
#! /bin/bash
_zeroc_ice() {
# ¿Es un ejecutable?
[ ! -x "$1" ] && return 0
local actual previo opciones;
COMREPLY=()
actual="${COMP_WORDS[COMP_CWORD]}"
previo="${COMP_WORDS[COMP_CWORD-1]}"
opciones="
--Ice.ACM.
--Ice.Admin.
--Ice.Config=
--Ice.Default.CollocationOptimized=
--Ice.Default.EncodingVersion=
--Ice.Default.EndpointSelection=
--Ice.Default.Host=
--Ice.Default.InvocationTimeout=
--Ice.Default.Locator=
--Ice.Default.LocatorCacheTimeout=
--Ice.Default.Package=
--Ice.Default.PreferSecure=
--Ice.Default.Protocol=
--Ice.Default.Router=
--Ice.Default.SlicedFormat=
--Ice.Default.SourceAddress=
--Ice.Default.Timeout=
--Ice.InitPlugins=
--Ice.IPv4=
--Ice.IPv6=
--Ice.Override.
--Ice.Plugin.
--Ice.PluginLoadOrder=
--Ice.PreferIPv6Address=
--Ice.TCP.Backlog=
--Ice.TCP.RcvSize=
--Ice.TCP.SndSize=
--Ice.ThreadPool.
--Ice.ThreadPriority=
--Ice.Trace.
--Ice.UDP.RcvSize=
--Ice.UDP.SndSize=
--Ice.Warn.
--IceBox.
--IceBoxAdmin=
--IceDiscovery.
--IceGrid.
--IceGridAdmin.
--IceLocatorDiscovery.
--IceMX.Metrics.
--IcePatch2.
--IcePatch2Client.
--IceSSL.
"
# Si hemos tecleado un argumento "--*" y acabamos de teclear el "=",
listamos los archivos *.cfg
if [[ ${previo} == "--"* && ${actual} == "=" ]]
then
compopt -o filenames
local archivos=( *.cfg )
# Comprobamos que exista al menos el primer archivo para evitar que
nos devuelvan el patrón (no encontrado)
[[ -r ${archivos[0]} ]] && COMPREPLY=( "${archivos[@]// /\ }" )
return 0
fi
# Si hemos tecleado el argumento y estamos tras el "=", completamos
el resto del nombre del archivo
if [[ ${previo} == '=' ]]
then
compopt -o filenames
local archivos=( ${actual}*.cfg )
# Comprobamos que exista al menos el primer archivo para evitar que
nos devuelvan el patrón (no encontrado)
[[ -r ${archivos[0]} ]] && COMPREPLY=( "${archivos[@]// /\ }" )
return 0
fi
# Si hemos llegado hasta aquà aún no hemos llegado al "=",
completamos sólo las opciones
COMPREPLY=( $(compgen -W "${opciones}" -- "${actual}" ) );
}
complete -o nospace -D -F _zeroc_ice
------------ próxima parte ------------
Se ha borrado un mensaje que no est� en formato texto plano...
Nombre : zeroc-ice.sh
Tipo : application/x-shellscript
Tama�o : 2079 bytes
Descripci�n: no disponible
Url : http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20160419/37b56483/attachment.bin
More information about the Jde-developers
mailing list