2 # Copyright (C) 2015 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
4 # bash/zsh completion support for ges-launch
6 # This library is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU Library General Public
8 # License as published by the Free Software Foundation; either
9 # version 2 of the License, or (at your option) any later version.
11 # This library is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # Library General Public License for more details.
16 # You should have received a copy of the GNU Library General Public
17 # License along with this library; if not, write to the
18 # Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
19 # Boston, MA 02110-1301, USA.
21 HELPERDIR="${BASH_SOURCE[0]%/*}/../helpers"
23 if [[ ! -d "$HELPERDIR" ]]; then
24 HELPERDIR="$(pkg-config --variable=helpersdir gstreamer-1.0)"
26 HELPERDIR=`cd "$HELPERDIR"; pwd`
32 HELPER="$HELPERDIR/gst-completion-helper-1.0"
34 _ges___inspect_action_type ()
36 COMPREPLY=( $(compgen -W "$(ges-launch-1.0 --inspect-action-type | grep '^[^ ]' | cut -d':' -f2)" -- $cur) )
41 COMPREPLY=( $(compgen -W "audio video audio+video" -- $cur) )
44 _ges___set_scenario () {
45 COMPREPLY=( $(compgen -W "*.scenario $(gst-validate-1.0 -l | awk '$0=$2' FS=[ RS=])" -- $cur) )
49 COMPREPLY=( $(compgen -W "*.xges" -- $cur) )
53 COMPREPLY=( $(compgen -W "file://" -- $cur) )
57 COMPREPLY=( $(compgen -W "$($HELPER --klass=Sink --sinkcaps='audio/x-raw')" -- $cur) )
61 COMPREPLY=( $(compgen -W "$($HELPER --klass=Sink --sinkcaps='video/x-raw')" -- $cur) )
65 if [[ "$prev" == "$command" ]];
67 _gst_mandatory_argument
69 COMPREPLY=( $(compgen -W "duration= inpoint= start= layer= $(ges-launch-1.0 help all | egrep '^ +')" -- $cur) )
74 if [[ "$prev" == "$command" ]];
76 _gst_mandatory_argument
78 COMPREPLY=( $(compgen -W "duration= inpoint= start= layer= $(ges-launch-1.0 help all | egrep '^ +')" -- $cur) )
83 if [[ "$prev" == "$command" ]];
85 _gst_mandatory_argument
87 COMPREPLY=( $(compgen -W "duration= start= layer= $(ges-launch-1.0 help all | egrep '^ +')" -- $cur) )
91 _ges_list_options () {
92 COMPREPLY=( $(compgen -W "$(ges-launch-1.0 --help-all | grep -oh '[[:graph:]]*--[[:graph:]]*' | cut -d'=' -f1)" -- $cur) )
95 _ges_list_commands () {
96 COMPREPLY=( $(compgen -W "$(ges-launch-1.0 help all | egrep '^ +')" -- $cur) )
99 _ges_list_properties () {
102 if [[ "$real_command" == "" ]]
104 _gst_mandatory_argument
105 elif [[ "$real_command" == "+clip" ]]
107 COMPREPLY=( $(compgen -W "set-alpha set-posx set-posy set-width set-height set-volume set-mute" -- $cur) )
108 elif [[ "$real_command" == "+test-clip" ]]
110 COMPREPLY=( $(compgen -W "set-alpha set-posx set-posy set-width set-height set-volume set-mute" -- $cur) )
111 elif [[ "$real_command" == "+effect" ]]
114 effect_bin_description="${effect_bin_description//\"/ }"
115 array=(${effect_bin_description//!/ })
116 for i in "${array[@]}"; do
117 props=("$($HELPER --element-properties $i)")
120 COMPREPLY+=( $(compgen -W "set-$j" -- $cur) )
124 _gst_mandatory_argument
128 _ges___exclude_ () { _gst_mandatory_argument; }
129 _ges___encoding_profile () { _gst_mandatory_argument; }
130 _ges___ges_sample_path () { _gst_mandatory_argument; }
131 _ges___ges_sample_path_recurse () { _gst_mandatory_argument; }
132 _ges___thumbnail () { _gst_mandatory_argument; }
133 _ges___repeat () { _gst_mandatory_argument; }
134 _ges___save () { _gst_mandatory_argument; }
140 [[ "$e" == "$1" ]] && return 0;
147 local i=1 c=1 command function_exists completion_func commands real_command effect_bin_description
149 commands=($(ges-launch-1.0 help all | egrep '^ +'))
151 effect_bin_description=""
153 if [[ "$cur" == "=" ]]; then
154 _gst_mandatory_argument
158 while [[ $i -ne $COMP_CWORD ]];
161 var="${COMP_WORDS[i]}"
162 if [[ "$var" == "--"* ]]
165 elif containsElement "$var" "${commands[@]}";
169 if [[ "$var" == "+effect" ]]
171 effect_bin_description="${COMP_WORDS[i+1]}"
177 if [[ "$command" == "--gst"* ]]; then
178 completion_func="_${command//-/_}"
180 completion_func="_ges_${command//-/_}"
181 completion_func="${completion_func//+/}"
184 declare -f $completion_func >/dev/null 2>&1
188 if [[ "$cur" == "-"* ]]; then
190 elif [[ "$cur" == "+"* ]]; then
192 elif [[ "$cur" == "="* ]]
194 _gst_mandatory_argument
195 elif [[ "$cur" == "set-"* ]]
198 elif [ $function_exists -eq 0 ]
209 cur="${COMP_WORDS[COMP_CWORD]}"
210 prev="${COMP_WORDS[COMP_CWORD-1]}"
214 # Setup completion for certain functions defined above by setting common
215 # variables and workarounds.
216 # This is NOT a public function; use at your own risk.
219 local wrapper="__ges_wrap${2}"
220 eval "$wrapper () { __ges_func_wrap $2 ; }"
221 complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
222 || complete -o default -o nospace -F $wrapper $1
230 __ges_complete ges-launch-1.0 __ges_main