|
Packit |
a38265 |
# Bash completion support for oggz.
|
|
Packit |
a38265 |
# Conrad Parker, Aug 3 2008
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
# Copyright (C) 2008 Annodex Association
|
|
Packit |
a38265 |
#
|
|
Packit |
a38265 |
# Redistribution and use in source and binary forms, with or without
|
|
Packit |
a38265 |
# modification, are permitted provided that the following conditions
|
|
Packit |
a38265 |
# are met:
|
|
Packit |
a38265 |
#
|
|
Packit |
a38265 |
# - Redistributions of source code must retain the above copyright
|
|
Packit |
a38265 |
# notice, this list of conditions and the following disclaimer.
|
|
Packit |
a38265 |
#
|
|
Packit |
a38265 |
# - Redistributions in binary form must reproduce the above copyright
|
|
Packit |
a38265 |
# notice, this list of conditions and the following disclaimer in the
|
|
Packit |
a38265 |
# documentation and/or other materials provided with the distribution.
|
|
Packit |
a38265 |
#
|
|
Packit |
a38265 |
# - Neither the name of the Annodex Association nor the names of its
|
|
Packit |
a38265 |
# contributors may be used to endorse or promote products derived from
|
|
Packit |
a38265 |
# this software without specific prior written permission.
|
|
Packit |
a38265 |
#
|
|
Packit |
a38265 |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
Packit |
a38265 |
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
Packit |
a38265 |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
Packit |
a38265 |
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ASSOCIATION OR
|
|
Packit |
a38265 |
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
Packit |
a38265 |
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
Packit |
a38265 |
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
Packit |
a38265 |
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
Packit |
a38265 |
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
Packit |
a38265 |
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
Packit |
a38265 |
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
OGGZ_COMMANDS="chop codecs comment diff dump help info known-codecs merge rip scan sort validate"
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
__oggzcomp ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
COMPREPLY=( $( compgen -W '$*' -- $cur ))
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
return
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
__oggz_commands ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
__oggzcomp $OGGZ_COMMANDS
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
__oggz_known_codecs ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
local cur=$1
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
cur_LOWERCASE=$(echo $cur | tr '[:upper:]' '[:lower:]')
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
KNOWN=$(oggz-known-codecs)
|
|
Packit |
a38265 |
KNOWN_LOWERCASE=$(echo $KNOWN | tr '[:upper:]' '[:lower:]')
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
# If the user has typed nothing, or lowercase, complete on lowercased
|
|
Packit |
a38265 |
# codec names
|
|
Packit |
a38265 |
if [ -z $cur -o $cur = $cur_LOWERCASE ] ; then
|
|
Packit |
a38265 |
__oggzcomp "$KNOWN_LOWERCASE"
|
|
Packit |
a38265 |
else
|
|
Packit |
a38265 |
__oggzcomp "$KNOWN"
|
|
Packit |
a38265 |
fi
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
# See http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
|
Packit |
a38265 |
_oggz_filedir ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_filedir '@(ogx|ogv|oga|ogg|spx|anx|axv|axa)'
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_ctype_cmd ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
local cur="${COMP_WORDS[COMP_CWORD]}"
|
|
Packit |
a38265 |
local prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
local command=$1
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
case "$prev" in
|
|
Packit |
a38265 |
-c|--content-type)
|
|
Packit |
a38265 |
__oggz_known_codecs $cur
|
|
Packit |
a38265 |
return ;;
|
|
Packit |
a38265 |
esac
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
case "$cur" in
|
|
Packit |
a38265 |
-*)
|
|
Packit |
a38265 |
__oggzcomp $($command -?)
|
|
Packit |
a38265 |
return ;;
|
|
Packit |
a38265 |
*) _oggz_filedir
|
|
Packit |
a38265 |
return ;;
|
|
Packit |
a38265 |
esac
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_basic_cmd ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
local cur="${COMP_WORDS[COMP_CWORD]}"
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
local command=$1
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
case "$cur" in
|
|
Packit |
a38265 |
-*)
|
|
Packit |
a38265 |
__oggzcomp $($command -?)
|
|
Packit |
a38265 |
return ;;
|
|
Packit |
a38265 |
*) _oggz_filedir
|
|
Packit |
a38265 |
return ;;
|
|
Packit |
a38265 |
esac
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_chop ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_basic_cmd oggz-chop
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_comment ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_ctype_cmd oggz-comment
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_diff ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_ctype_cmd oggz-diff
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_dump ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_ctype_cmd oggz-dump
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_info ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_basic_cmd oggz-info
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_known_codecs ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_basic_cmd oggz-known-codecs
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_merge ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_basic_cmd oggz-merge
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_rip ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_ctype_cmd oggz-rip
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_scan ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_basic_cmd oggz-scan
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_sort ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_basic_cmd oggz-sort
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_validate ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_basic_cmd oggz-validate
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_codecs ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
_oggz_basic_cmd oggz-codecs
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz_help ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
__oggz_commands
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
_oggz ()
|
|
Packit |
a38265 |
{
|
|
Packit |
a38265 |
local cur="${COMP_WORDS[COMP_CWORD]}"
|
|
Packit |
a38265 |
local prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
Packit |
a38265 |
local i c=1 command
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
while [ $c -lt $COMP_CWORD ]; do
|
|
Packit |
a38265 |
i="${COMP_WORDS[c]}"
|
|
Packit |
a38265 |
case "$i" in
|
|
Packit |
a38265 |
--version|--help) ;;
|
|
Packit |
a38265 |
*) command="$i"; break ;;
|
|
Packit |
a38265 |
esac
|
|
Packit |
a38265 |
c=$((++c))
|
|
Packit |
a38265 |
done
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
|
|
Packit |
a38265 |
case "${COMP_WORDS[COMP_CWORD]}" in
|
|
Packit |
a38265 |
--*) COMPREPLY=() ;;
|
|
Packit |
a38265 |
*) __oggz_commands ;;
|
|
Packit |
a38265 |
esac
|
|
Packit |
a38265 |
return
|
|
Packit |
a38265 |
fi
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
case "$command" in
|
|
Packit |
a38265 |
chop) _oggz_chop ;;
|
|
Packit |
a38265 |
comment) _oggz_comment ;;
|
|
Packit |
a38265 |
diff) _oggz_diff ;;
|
|
Packit |
a38265 |
dump) _oggz_dump ;;
|
|
Packit |
a38265 |
help) _oggz_help ;;
|
|
Packit |
a38265 |
info) _oggz_info ;;
|
|
Packit |
a38265 |
known-codecs) _oggz_known-codecs ;;
|
|
Packit |
a38265 |
merge) _oggz_merge ;;
|
|
Packit |
a38265 |
rip) _oggz_rip ;;
|
|
Packit |
a38265 |
scan) _oggz_scan ;;
|
|
Packit |
a38265 |
sort) _oggz_sort ;;
|
|
Packit |
a38265 |
validate) _oggz_validate ;;
|
|
Packit |
a38265 |
codecs) _oggz_codecs ;;
|
|
Packit |
a38265 |
*) COMPREPLY=() ;;
|
|
Packit |
a38265 |
esac
|
|
Packit |
a38265 |
}
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
# Completion for wrapper oggz tool
|
|
Packit |
a38265 |
complete -o filenames -F _oggz oggz
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
# Completions for commands
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_chop oggz-chop
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_comment oggz-comment
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_diff oggz-diff
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_dump oggz-dump
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_info oggz-info
|
|
Packit |
a38265 |
complete -o default -F _oggz_known-codecs oggz-known-codecs
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_merge oggz-merge
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_rip oggz-rip
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_scan oggz-scan
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_sort oggz-sort
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_validate oggz-validate
|
|
Packit |
a38265 |
complete -o filenames -F _oggz_codecs oggz-codecs
|