summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorMathieu Duponchelle <mathieu.duponchelle@opencreed.com>2015-02-20 22:04:22 +0100
committerMathieu Duponchelle <mathieu.duponchelle@opencreed.com>2015-02-23 17:57:57 +0100
commit46e7baff745d35a2079d714ffb4284e85b74d1f7 (patch)
tree4d6e1d41e696f84b0bc83dd14cc8746a3cd99534 /data
parentbcce3fbcb8e55b72f3114971087582121b618dda (diff)
bash-completion: Implement in a different way.
+ Gets installed + Uses a helper tool, gst-completion-helper, installed in bash-completions/helpers. + Adds a common script that other tools can source. https://bugzilla.gnome.org/show_bug.cgi?id=744877
Diffstat (limited to 'data')
-rw-r--r--data/Makefile.am4
-rw-r--r--data/completions/gst-inspect-1.0105
-rw-r--r--data/completions/gst-launch-1.0143
3 files changed, 252 insertions, 0 deletions
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 000000000..7098492a0
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,4 @@
+if ENABLE_BASH_COMPLETION
+bashcompletiondir = $(BASH_COMPLETION_DIR)
+dist_bashcompletion_DATA = completions/gst-inspect-1.0 completions/gst-launch-1.0
+endif
diff --git a/data/completions/gst-inspect-1.0 b/data/completions/gst-inspect-1.0
new file mode 100644
index 000000000..130b96308
--- /dev/null
+++ b/data/completions/gst-inspect-1.0
@@ -0,0 +1,105 @@
+# GStreamer
+# Copyright (C) 2015 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+#
+# bash/zsh completion support for gst-inspect
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+HELPERDIR="${BASH_SOURCE[0]%/*}/../helpers"
+
+if [[ ! -d "$HELPERDIR" ]]; then
+ HELPERDIR="$(pkg-config --variable=helpersdir gstreamer-1.0)"
+else
+ HELPERDIR=`cd "$HELPERDIR"; pwd`
+fi
+
+# Common definitions
+. "$HELPERDIR"/gst
+
+HELPER="$HELPERDIR/gst-completion-helper-1.0"
+
+_inspect_all_arguments ()
+{
+ COMPREPLY=( $(compgen -W "$(gst-inspect-1.0 --help-all | grep -oh '[[:graph:]]*--[[:graph:]]*' | cut -d'=' -f1)" -- $cur) )
+}
+
+_inspect_all_elements ()
+{
+ COMPREPLY=( $(compgen -W "$($HELPER -l)" -- $cur) )
+}
+
+_gstinspect___atleast_version () { _mandatory__argument; }
+
+_gstinspect___exists ()
+{
+ _inspect_all_elements
+}
+
+__inspect_main ()
+{
+ local i=1 command function_exists completion_func
+
+ while [[ $i -ne $COMP_CWORD ]];
+ do
+ local var
+ var="${COMP_WORDS[i]}"
+ if [[ "$var" == "--"* ]]
+ then
+ command="$var"
+ fi
+ i=$[$i+1]
+ done
+
+ if [[ "$command" == "--gst"* ]]; then
+ completion_func="_${command//-/_}"
+ else
+ completion_func="_gstinspect_${command//-/_}"
+ fi
+
+ declare -f $completion_func >/dev/null 2>&1
+
+ function_exists=$?
+
+ if [[ "$cur" == "--"* ]]; then
+ _inspect_all_arguments
+ elif [ $function_exists -eq 0 ]
+ then
+ $completion_func
+ else
+ _inspect_all_elements
+ fi
+}
+
+__inspect_func_wrap ()
+{
+ local cur prev
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ $1
+}
+
+# Setup completion for certain functions defined above by setting common
+# variables and workarounds.
+# This is NOT a public function; use at your own risk.
+__inspect_complete ()
+{
+ local wrapper="__inspect_wrap${2}"
+ eval "$wrapper () { __inspect_func_wrap $2 ; }"
+ complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
+ || complete -o default -o nospace -F $wrapper $1
+}
+
+__inspect_complete gst-inspect-1.0 __inspect_main
diff --git a/data/completions/gst-launch-1.0 b/data/completions/gst-launch-1.0
new file mode 100644
index 000000000..a12e06efd
--- /dev/null
+++ b/data/completions/gst-launch-1.0
@@ -0,0 +1,143 @@
+# GStreamer
+# Copyright (C) 2015 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+#
+# bash/zsh completion support for gst-launch
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+HELPERDIR="${BASH_SOURCE[0]%/*}/../helpers"
+
+if [[ ! -d "$HELPERDIR" ]]; then
+ HELPERDIR="$(pkg-config --variable=helpersdir gstreamer-1.0)"
+else
+ HELPERDIR=`cd "$HELPERDIR"; pwd`
+fi
+
+# Common definitions
+. "$HELPERDIR"/gst
+
+HELPER="$HELPERDIR/gst-completion-helper-1.0"
+
+_launch_all_arguments ()
+{
+ COMPREPLY=( $(compgen -W "$(gst-launch-1.0 --help-all | grep -oh '[[:graph:]]*--[[:graph:]]*' | cut -d'=' -f1)" -- $cur) )
+}
+
+_complete_compatible_elements ()
+{
+ COMPREPLY=( $(compgen -W "$($HELPER --compatible-with $previous_element)" -- $cur) )
+}
+
+_complete_all_elements ()
+{
+ COMPREPLY=( $(compgen -W "$($HELPER -l)" -- $cur) )
+}
+
+_complete_element_properties ()
+{
+ COMPREPLY=( $(compgen -W "$($HELPER --element-properties $previous_element)" -- $cur) )
+}
+
+_gstlaunch___exclude_ () { _mandatory__argument; }
+
+__launch_main ()
+{
+ local i=1 command function_exists previous_element have_previous_element=0 completion_func
+
+ while [[ $i -ne $COMP_CWORD ]];
+ do
+ local var
+ var="${COMP_WORDS[i]}"
+ if [[ "$var" == "--"* ]]
+ then
+ command="$var"
+ fi
+ i=$[$i+1]
+ done
+
+ i=1
+ while [[ $i -ne $COMP_CWORD ]];
+ do
+ local var
+ var="${COMP_WORDS[i]}"
+
+ if [[ "$var" == "--"* ]]
+ then
+ i=$[$i+1]
+ continue
+ fi
+
+ $(gst-inspect-1.0 --exists $var)
+ if [ $? -eq 0 ]
+ then
+ previous_element="$var"
+ have_previous_element=1
+ fi
+ i=$[$i+1]
+ done
+
+ if [[ "$command" == "--gst"* ]]; then
+ completion_func="_${command//-/_}"
+ else
+ completion_func="_gstlaunch_${command//-/_}"
+ fi
+
+ # Seems like bash doesn't like "exclude" in function names
+ if [[ "$completion_func" == "_gstlaunch___exclude" ]]
+ then
+ completion_func="_gstlaunch___exclude_"
+ fi
+
+ declare -f $completion_func >/dev/null 2>&1
+
+ function_exists=$?
+
+ if [[ "$cur" == "--"* ]]; then
+ _launch_all_arguments
+ elif [ $function_exists -eq 0 ]
+ then
+ $completion_func
+ elif [ $have_previous_element -ne 0 ] && [[ "$prev" == "!" ]]
+ then
+ _complete_compatible_elements
+ elif [ $have_previous_element -ne 0 ]
+ then
+ _complete_element_properties
+ else
+ _complete_all_elements
+ fi
+}
+
+__launch_func_wrap ()
+{
+ local cur prev
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ $1
+}
+
+# Setup completion for certain functions defined above by setting common
+# variables and workarounds.
+# This is NOT a public function; use at your own risk.
+__launch_complete ()
+{
+ local wrapper="__launch_wrap${2}"
+ eval "$wrapper () { __launch_func_wrap $2 ; }"
+ complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
+ || complete -o default -o nospace -F $wrapper $1
+}
+
+__launch_complete gst-launch-1.0 __launch_main