summaryrefslogtreecommitdiff
path: root/contrib/cpio
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/cpio')
-rw-r--r--contrib/cpio101
1 files changed, 101 insertions, 0 deletions
diff --git a/contrib/cpio b/contrib/cpio
new file mode 100644
index 00000000..f28b1b21
--- /dev/null
+++ b/contrib/cpio
@@ -0,0 +1,101 @@
+# bash completion for cpio
+
+have cpio && {
+_cpio_format()
+{
+ COMPREPLY=( $( compgen -W 'bin odc newc crc tar ustar hpbin hpodc' -- "$cur" ) )
+}
+
+_cpio()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ _split_longopt && split=true
+
+ # --name value style option
+ case $prev in
+ -H|--format)
+ _cpio_format
+ return 0
+ ;;
+ -@(E|F|I|-?(pattern-)file))
+ _filedir
+ return 0
+ ;;
+ -R|--owner)
+ _usergroup
+ return 0
+ ;;
+ --rsh-command)
+ COMPREPLY=( $( compgen -c -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W '-o --create -i --extract -p --pass-through' -- "$cur" ) )
+ else
+ case ${COMP_WORDS[1]} in
+ -@(o|-create))
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-0 -a -c -v -A -B\
+ -L -V -C -H -M -O -F --file --format\
+ --message --null --reset-access-time\
+ --verbose --dot --append --block-size\
+ --dereference --io-size --quiet\
+ --force-local --rsh-command --help\
+ --version' -- "$cur" ) )
+ fi
+ ;;
+ -@(i|-extract))
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-b -c -d -f -m -n -r\
+ -t -s -u -v -B -S -V -C -E -H -M -R -I\
+ -F --file --make-directories\
+ --nonmatching\
+ --preserve-modification-time\
+ --numeric-uid-gid --rename -t --list\
+ --swap-bytes --swap --dot\
+ --unconditional --verbose --block-size\
+ --swap-halfwords --io-size\
+ --pattern-file --format --owner\
+ --no-preserve-owner --message\
+ --force-local --no-absolute-filenames\
+ --sparse --only-verify-crc --quiet\
+ --rsh-command --help\
+ --version' -- "$cur" ) )
+ fi
+ ;;
+ -@(p|-pass-through))
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-0 -a -d -l -m -u -v\
+ -L -V -R --null --reset-access-time\
+ --make-directories --link --quiet\
+ --preserve-modification-time\
+ --unconditional --verbose --dot\
+ --dereference --owner\
+ --no-preserve-owner --sparse --help\
+ --version' -- "$cur" ) )
+ else
+ _filedir -d
+ fi
+ ;;
+ esac
+ fi
+}
+complete -F _cpio cpio
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh