summaryrefslogtreecommitdiff
path: root/completions/rsync
diff options
context:
space:
mode:
Diffstat (limited to 'completions/rsync')
-rw-r--r--completions/rsync92
1 files changed, 92 insertions, 0 deletions
diff --git a/completions/rsync b/completions/rsync
new file mode 100644
index 00000000..b0f2d106
--- /dev/null
+++ b/completions/rsync
@@ -0,0 +1,92 @@
+# bash completion for rsync
+
+have rsync &&
+_rsync()
+{
+ # TODO: _split_longopt
+
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref -n : cur prev
+
+ _expand || return 0
+
+ case $prev in
+ --config|--password-file|--include-from|--exclude-from)
+ _filedir
+ return 0
+ ;;
+ -T|--temp-dir|--compare-dest)
+ _filedir -d
+ return 0
+ ;;
+ -e|--rsh)
+ COMPREPLY=( $( compgen -W 'rsh ssh' -- "$cur" ) )
+ return 0
+ ;;
+ --compress-level)
+ COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ case $cur in
+ -*)
+ COMPREPLY=( $( compgen -W '--verbose --quiet --no-motd --checksum \
+ --archive --recursive --relative --no-implied-dirs \
+ --backup --backup-dir --suffix= --update --inplace --append \
+ --append-verify --dirs --old-dirs --links --copy-links \
+ --copy-unsafe-links --safe-links --copy-dirlinks \
+ --keep-dirlinks --hard-links --perms --executability --chmod= \
+ --acls --xattrs --owner --group --devices --copy-devices \
+ --specials --times --omit-dir-times --super --fake-super \
+ --sparse --dry-run --whole-file --no-whole-file \
+ --one-file-system --block-size= --rsh= --rsync-path= \
+ --existing --ignore-existing --remove-source-files --delete \
+ --delete-before --delete-during --delete-delay --delete-after \
+ --delete-excluded --ignore-errors --force --max-delete= \
+ --max-size= --min-size= --partial --partial-dir= \
+ --delay-updates --prune-empty-dirs --numeric-ids --timeout= \
+ --contimeout= --ignore-times --size-only --modify-window= \
+ --temp-dir= --fuzzy --compare-dest= --copy-dest= --link-dest= \
+ --compress --compress-level= --skip-compress= --cvs-exclude \
+ --filter= --exclude= --exclude-from= --include= \
+ --include-from= --files-from= --from0 --protect-args \
+ --address= --port= --sockopts= --blocking-io --no-blocking-io \
+ --stats --8-bit-output --human-readable --progress \
+ --itemize-changes --out-format= --log-file= \
+ --log-file-format= --password-file= --list-only --bwlimit= \
+ --write-batch= --only-write-batch= --read-batch= --protocol= \
+ --iconv= --ipv4 --ipv6 --version --help --daemon --config= \
+ --no-detach' -- "$cur" ) )
+ ;;
+ *:*)
+ if type _scp_remote_files &>/dev/null; then
+ # find which remote shell is used
+ local i shell=ssh
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ if [[ "${COMP_WORDS[i]}" == -@(e|-rsh) ]]; then
+ shell=${COMP_WORDS[i+1]}
+ break
+ fi
+ done
+ [ "$shell" = ssh ] && _scp_remote_files
+ fi
+ ;;
+ *)
+ _known_hosts_real -c -a "$cur"
+ type _scp_local_files &>/dev/null && _scp_local_files || _filedir
+ ;;
+ esac
+
+ return 0
+} &&
+complete -F _rsync -o nospace rsync
+
+# 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