Quote shell special characters ...

... and add support for mdb-count mdb-json and mdb-queries
This commit is contained in:
Nirgal Vourgère
2020-10-25 20:16:47 +01:00
parent 0c50428532
commit f6053aa211
7 changed files with 133 additions and 8 deletions

View File

@@ -1,4 +1,4 @@
if ENABLE_BASH_COMPLETION
bashcompletiondir = $(BASH_COMPLETION_DIR)
dist_bashcompletion_DATA = mdb-export mdb-hexdump mdb-import mdb-parsecsv mdb-prop mdb-schema mdb-sql mdb-tables mdb-ver
dist_bashcompletion_DATA = mdb-count mdb-export mdb-hexdump mdb-import mdb-json mdb-parsecsv mdb-prop mdb-queries mdb-schema mdb-sql mdb-tables mdb-ver
endif

View File

@@ -0,0 +1,29 @@
#-*- mode: shell-script;-*-
_mdb_count()
{
local cur prev
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
if [[ "$prev" == *@(mdb|mdw|accdb) ]] ; then
local dbname
local tablenames
local tablename
dbname=$prev
__expand_tilde_by_ref dbname
local IFS=$'\n'
tablenames=""
while read tablename
do
#shell-quote each line
tablenames="$tablenames"$'\n'"$(printf %q "${tablename}")"
done < <(eval mdb-tables -S -1 "${dbname}" 2>/dev/null)
compopt -o filenames
COMPREPLY=( $( compgen -W "${tablenames}" -- $cur ) )
else
_filedir '@(mdb|mdw|accdb)'
fi
return 0
} &&
complete -F _mdb_count mdb-count

View File

@@ -23,10 +23,18 @@ _mdb_export()
elif [[ "$prev" == *@(mdb|mdw|accdb) ]] ; then
local dbname
local tablenames
local tablename
dbname=$prev
__expand_tilde_by_ref dbname
tablenames=$(eval mdb-tables -S -d / "${dbname}" 2>/dev/null)
COMPREPLY=( $( IFS=/ compgen -W "${tablenames}" -- $cur ) )
local IFS=$'\n'
tablenames=""
while read tablename
do
#shell-quote each line
tablenames="$tablenames"$'\n'"$(printf %q "${tablename}")"
done < <(eval mdb-tables -S -1 "${dbname}" 2>/dev/null)
compopt -o filenames
COMPREPLY=( $( compgen -W "${tablenames}" -- $cur ) )
else
_filedir '@(mdb|mdw|accdb)'
fi

View File

@@ -16,10 +16,18 @@ _mdb_import()
elif [[ "$prev" == @(*mdb|*mdw|*accdb) ]]; then
local dbname
local tablenames
local tablename
dbname=$prev
__expand_tilde_by_ref dbname
tablenames=$(eval mdb-tables -S -d / "${dbname}" 2>/dev/null)
COMPREPLY=( $( IFS=/ compgen -W "${tablenames}" -- $cur ) )
local IFS=$'\n'
tablenames=""
while read tablename
do
#shell-quote each line
tablenames="$tablenames"$'\n'"$(printf %q "${tablename}")"
done < <(eval mdb-tables -S -1 "${dbname}" 2>/dev/null)
compopt -o filenames
COMPREPLY=( $( compgen -W "${tablenames}" -- $cur ) )
else
_filedir '@(mdb|mdw|accdb|txt|csv)'
fi

View File

@@ -0,0 +1,36 @@
#-*- mode: shell-script;-*-
_mdb_json()
{
local cur prev
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
if [[ "$prev" == -@(D|-date-format|T|-datetime-format|U|--no-unprintable|h|-help) ]] ; then
return 0
elif [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '-h -D -T -U \
--date-format --datetime-format \
--no-unprintable \
--help' -- $cur ) )
elif [[ "$prev" == *@(mdb|mdw|accdb) ]] ; then
local dbname
local tablenames
local tablename
dbname=$prev
__expand_tilde_by_ref dbname
local IFS=$'\n'
tablenames=""
while read tablename
do
#shell-quote each line
tablenames="$tablenames"$'\n'"$(printf %q "${tablename}")"
done < <(eval mdb-tables -S -1 "${dbname}" 2>/dev/null)
compopt -o filenames
COMPREPLY=( $( compgen -W "${tablenames}" -- $cur ) )
else
_filedir '@(mdb|mdw|accdb)'
fi
return 0
} &&
complete -F _mdb_json mdb-json

View File

@@ -11,10 +11,18 @@ _mdb_prop()
elif (( COMP_CWORD == 2 )); then
local dbname
local tablenames
dbname=${COMP_WORDS[1]}
local tablename
dbname=$prev
__expand_tilde_by_ref dbname
tablenames=$(eval mdb-tables -S -d / "${dbname}" 2>/dev/null)
COMPREPLY=( $( IFS=/ compgen -W "${tablenames}" -- $cur ) )
local IFS=$'\n'
tablenames=""
while read tablename
do
#shell-quote each line
tablenames="$tablenames"$'\n'"$(printf %q "${tablename}")"
done < <(eval mdb-tables -S -1 "${dbname}" 2>/dev/null)
compopt -o filenames
COMPREPLY=( $( compgen -W "${tablenames}" -- $cur ) )
elif (( COMP_CWORD == 3 )); then
COMPREPLY=( $( compgen -W 'Lv LvProp LvModule LvExtra' -- $cur ) )
fi

View File

@@ -0,0 +1,36 @@
#-*- mode: shell-script;-*-
_mdb_queries()
{
local cur prev
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
if [[ "$prev" == -@(d) ]]; then
return 0
elif [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '-L\
-1 \
-d' -- $cur ) )
elif [[ "$prev" == *@(mdb|mdw|accdb) ]] ; then
local dbname
local querynames
local queryname
dbname=$prev
__expand_tilde_by_ref dbname
local IFS=$'\n'
querynames=""
while read queryname
do
#shell-quote each line
querynames="$querynames"$'\n'"$(printf %q "${queryname}")"
done < <(eval mdb-queries -1 "${dbname}" 2>/dev/null)
compopt -o filenames
COMPREPLY=( $( compgen -W "${querynames}" -- $cur ) )
else
_filedir '@(mdb|mdw|accdb)'
fi
return 0
} &&
complete -F _mdb_queries mdb-queries