[xiph-commits] r3676 - in liboggz/trunk: . bash-completion
conrad at svn.annodex.net
conrad at svn.annodex.net
Sun Aug 3 00:28:39 PDT 2008
Author: conrad
Date: 2008-08-03 00:28:38 -0700 (Sun, 03 Aug 2008)
New Revision: 3676
Added:
liboggz/trunk/bash-completion/
liboggz/trunk/bash-completion/oggz
Modified:
liboggz/trunk/Makefile.am
liboggz/trunk/README
Log:
Add bash-completion/oggz script. Source it from your .profile, or add it
to /etc/bash_completion.d to enable completion of oggz tool options and
codec names.
Modified: liboggz/trunk/Makefile.am
===================================================================
--- liboggz/trunk/Makefile.am 2008-08-03 06:31:33 UTC (rev 3675)
+++ liboggz/trunk/Makefile.am 2008-08-03 07:28:38 UTC (rev 3676)
@@ -22,6 +22,8 @@
# Extra files to distribute in the source tarball.
EXTRA_DIST = oggz.pc.in oggz-uninstalled.pc.in \
+ apache-install.sh \
+ bash-completion/oggz \
$(SYMBIAN_extra_dist) $(WIN32_extra_dist)
# Extra files to distribute for the Symbian build.
Modified: liboggz/trunk/README
===================================================================
--- liboggz/trunk/README 2008-08-03 06:31:33 UTC (rev 3675)
+++ liboggz/trunk/README 2008-08-03 07:28:38 UTC (rev 3676)
@@ -124,6 +124,10 @@
* oggz-validate: Validate the Ogg framing of one or more files.
+The script bash-completion/oggz enables completion of tool options and codec
+names when using the bash shell. Source it from your .profile, or install it
+in /etc/bash_completion.d to enable it system-wide.
+
License
-------
Added: liboggz/trunk/bash-completion/oggz
===================================================================
--- liboggz/trunk/bash-completion/oggz (rev 0)
+++ liboggz/trunk/bash-completion/oggz 2008-08-03 07:28:38 UTC (rev 3676)
@@ -0,0 +1,222 @@
+# Bash completion support for oggz.
+# Conrad Parker, Aug 3 2008
+
+# Copyright (C) 2008 Annodex Association
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of the Annodex Association nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ASSOCIATION OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+OGGZ_COMMANDS="chop comment diff dump help info known-codecs merge rip scan sort validate"
+
+__oggzcomp ()
+{
+ COMPREPLY=( $( compgen -W '$*' -- $cur ))
+
+ return
+}
+
+__oggz_commands ()
+{
+ __oggzcomp $OGGZ_COMMANDS
+}
+
+__oggz_known_codecs ()
+{
+ local cur=$1
+
+ cur_LOWERCASE=$(echo $cur | tr '[:upper:]' '[:lower:]')
+
+ KNOWN=$(oggz-known-codecs)
+ KNOWN_LOWERCASE=$(echo $KNOWN | tr '[:upper:]' '[:lower:]')
+
+ # If the user has typed nothing, or lowercase, complete on lowercased
+ # codec names
+ if [ -z $cur -o $cur = $cur_LOWERCASE ] ; then
+ __oggzcomp "$KNOWN_LOWERCASE"
+ else
+ __oggzcomp "$KNOWN"
+ fi
+}
+
+# See http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
+_oggz_filedir ()
+{
+ _filedir '@(ogx|ogv|oga|ogg|spx|anx|axv|axa)'
+}
+
+_oggz_ctype_cmd ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ local prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ local command=$1
+
+ case "$prev" in
+ -c|--content-type)
+ __oggz_known_codecs $cur
+ return ;;
+ esac
+
+ case "$cur" in
+ -*)
+ __oggzcomp $($command -?)
+ return ;;
+ *) _oggz_filedir
+ return ;;
+ esac
+}
+
+_oggz_basic_cmd ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+
+ local command=$1
+
+ case "$cur" in
+ -*)
+ __oggzcomp $($command -?)
+ return ;;
+ *) _oggz_filedir
+ return ;;
+ esac
+}
+
+_oggz_chop ()
+{
+ _oggz_basic_cmd oggz-chop
+}
+
+_oggz_comment ()
+{
+ _oggz_ctype_cmd oggz-comment
+}
+
+_oggz_diff ()
+{
+ _oggz_ctype_cmd oggz-diff
+}
+
+_oggz_dump ()
+{
+ _oggz_ctype_cmd oggz-dump
+}
+
+_oggz_info ()
+{
+ _oggz_basic_cmd oggz-info
+}
+
+_oggz_known_codecs ()
+{
+ _oggz_basic_cmd oggz-known-codecs
+}
+
+_oggz_merge ()
+{
+ _oggz_basic_cmd oggz-merge
+}
+
+_oggz_rip ()
+{
+ _oggz_ctype_cmd oggz-rip
+}
+
+_oggz_scan ()
+{
+ _oggz_basic_cmd oggz-scan
+}
+
+_oggz_sort ()
+{
+ _oggz_basic_cmd oggz-sort
+}
+
+_oggz_validate ()
+{
+ _oggz_basic_cmd oggz-validate
+}
+
+_oggz_help ()
+{
+ __oggz_commands
+}
+
+_oggz ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ local prev="${COMP_WORDS[COMP_CWORD-1]}"
+ local i c=1 command
+
+ while [ $c -lt $COMP_CWORD ]; do
+ i="${COMP_WORDS[c]}"
+ case "$i" in
+ --version|--help) ;;
+ *) command="$i"; break ;;
+ esac
+ c=$((++c))
+ done
+
+ if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
+ case "${COMP_WORDS[COMP_CWORD]}" in
+ --*) COMPREPLY=() ;;
+ *) __oggz_commands ;;
+ esac
+ return
+ fi
+
+ case "$command" in
+ chop) _oggz_chop ;;
+ comment) _oggz_comment ;;
+ diff) _oggz_diff ;;
+ dump) _oggz_dump ;;
+ help) _oggz_help ;;
+ info) _oggz_info ;;
+ known-codecs) _oggz_known-codecs ;;
+ merge) _oggz_merge ;;
+ rip) _oggz_rip ;;
+ scan) _oggz_scan ;;
+ sort) _oggz_sort ;;
+ validate) _oggz_validate ;;
+ *) COMPREPLY=() ;;
+ esac
+}
+
+# Completion for wrapper oggz tool
+complete -o filenames -F _oggz oggz
+
+# Completions for commands
+complete -o filenames -F _oggz_chop oggz-chop
+complete -o filenames -F _oggz_comment oggz-comment
+complete -o filenames -F _oggz_diff oggz-diff
+complete -o filenames -F _oggz_dump oggz-dump
+complete -o filenames -F _oggz_info oggz-info
+complete -o default -F _oggz_known-codecs oggz-known-codecs
+complete -o filenames -F _oggz_merge oggz-merge
+complete -o filenames -F _oggz_rip oggz-rip
+complete -o filenames -F _oggz_scan oggz-scan
+complete -o filenames -F _oggz_sort oggz-sort
+complete -o filenames -F _oggz_validate oggz-validate
More information about the commits
mailing list