Added zsh completion

Signed-off-by: Óscar García Amor <ogarcia@connectical.com>
This commit is contained in:
Óscar García Amor 2019-03-13 18:52:36 +01:00
parent 47879a7d1a
commit 0e34e2b7aa

View file

@ -0,0 +1,233 @@
#compdef ffsend
local -a root_args
root_args=(
'(- *)'{-h,--help}'[Prints help information]'
'(- *)'{-V,--version}'[Prints version information]'
)
local -a common_args
common_args=(
'(-f --force)'{-f,--force}'[Force the action, ignore warnings]'
'(-i --incognito)'{-i,--incognito}"[Don't update local history for actions]"
'(-I --no-interact)'{-I,--no-interact}'[Not interactive, do not prompt]'
'(-q --quiet)'{-q,--quiet}'[Produce output suitable for logging and automation]'
'(-v --verbose)'{-v,--verbose}'[Enable verbose information and logging]'
'(-y --yes)'{-y,--yes}'[Assume yes for prompts]'
)
local -a common_options
common_options=(
'(-A --api)'{-A,--api}"[Server API version to use, '-' to lookup]:api:(2 3 auto -)"
'(-H --history)'{-H,--history}'[Use the specified history file]:history file:_files'
'(-t --timeout)'{-t,--timeout}'[Request timeout (0 to disable)]:timeout:'
'(-T --transfer-timeout)'{-T,--transfer-timeout}'[Transfer timeout (0 to disable)]:timeout:'
)
_ffsend_commands() {
local -a commands
commands=(
'upload:Upload files'
'download:Download files'
'debug:View debug information'
'delete:Delete a shared file'
'exists:Check whether a remote file exists'
'help:Prints this message or the help of the given subcommand(s)'
'history:View file history'
'info:Fetch info about a shared file'
'parameters:Change parameters of a shared file'
'password:Change the password of a shared file'
'version:Determine the Send server version'
)
_describe 'command' commands
}
_arguments -w -s -S \
${root_args[@]} \
${common_args[@]} \
${common_options[@]} \
'1: :_ffsend_commands' \
'*:: :->subcommands'
case ${words[1]} in
upload)
local -a upload_args
upload_args=(
'(-a --archive)'{-a,--archive}'[Archive the upload in a single file]'
'(-c --copy)'{-c,--copy}'[Copy the share link to your clipboard]'
'(-C --copy-cmd)'{-C,--copy-cmd}'[Copy the ffsend download command to your clipboard]'
'(-P --gen-passphrase)'{-P,--gen-passphrase}'[Protect the file with a generated passphrase]'
'(- *)--help[Prints help information]'
'(-o --open)'{-o,--open}'[Open the share link in your browser]'
)
local -a upload_options
upload_options=(
'(-d --download-limit)'{-d,--download-limit}'[The file download limit]:count:'
'(-h --host)'{-h,--host}'[The remote host to upload to]:host:'
'(-n --name)'{-n,--name}'[Rename the file being uploaded]:name:'
'(-p --password)'{-p,--password}'[Protect the file with a password]:password:'
)
_arguments -w -s -S \
${upload_args[@]} \
${common_args[@]} \
${upload_options[@]} \
${common_options[@]} \
':file:_files'
;;
download)
local -a download_args
download_args=(
'(-e --extract)'{-e,--extract}'[Extract an archived file]'
'(- *)'{-h,--help}'[Prints help information]'
)
local -a download_options
download_options=(
'(-o --output)'{-o,--output}'[The output file or directory]:output file or directory:_files'
'(-p --password)'{-p,--password}'[Unlock a password protected file]:password:'
)
_arguments -w -s -S \
${download_args[@]} \
${common_args[@]} \
${download_options[@]} \
${common_options[@]} \
':url:()'
;;
debug)
local -a debug_args
debug_args=(
'(- *)--help[Prints help information]'
)
local -a debug_options
debug_options=(
'(-h --host)'{-h,--host}'[The remote host to upload to]:host:'
)
_arguments -w -s -S \
${debug_args[@]} \
${common_args[@]} \
${debug_options[@]} \
${common_options[@]}
;;
delete)
local -a delete_args
delete_args=(
'(- *)'{-h,--help}'[Prints help information]'
)
local -a delete_options
delete_options=(
'(-o --owner)'{-o,--owner}'[Specify the file owner token]:token:'
)
_arguments -w -s -S \
${delete_args[@]} \
${common_args[@]} \
${delete_options[@]} \
${common_options[@]} \
'1:url:()'
;;
exists)
local -a exists_args
exists_args=(
'(- *)'{-h,--help}'[Prints help information]'
)
_arguments -w -s -S \
${exists_args[@]} \
${common_args[@]} \
${common_options[@]} \
'1:url:()'
;;
help)
local -a help_topics
help_topics=(
'upload'
'download'
'debug'
'delete'
'exists'
'help'
'history'
'info'
'parameters'
'password'
'version'
)
_values 'help topics' ${help_topics[@]}
;;
history)
local -a history_args
history_args=(
'(- *)'{-h,--help}'[Prints help information]'
)
_arguments -w -s -S \
${history_args[@]} \
${common_args[@]} \
${common_options[@]}
;;
info)
local -a info_args
info_args=(
'(- *)'{-h,--help}'[Prints help information]'
)
local -a info_options
info_options=(
'(-o --owner)'{-o,--owner}'[Specify the file owner token]:token:'
'(-p --password)'{-p,--password}'[Unlock a password protected file]:password:'
)
_arguments -w -s -S \
${info_args[@]} \
${common_args[@]} \
${info_options[@]} \
${common_options[@]} \
'1:url:()'
;;
parameters)
local -a parameters_args
parameters_args=(
'(- *)'{-h,--help}'[Prints help information]'
)
local -a parameters_options
parameters_options=(
'(-d --download-limit)'{-d,--download-limit}'[The file download limit]:count:'
'(-o --owner)'{-o,--owner}'[Specify the file owner token]:token:'
)
_arguments -w -s -S \
${parameters_args[@]} \
${common_args[@]} \
${parameters_options[@]} \
${common_options[@]} \
'1:url:()'
;;
password)
local -a password_args
password_args=(
'(-P --gen-passphrase)'{-P,--gen-passphrase}'[Protect the file with a generated passphrase]'
'(- *)'{-h,--help}'[Prints help information]'
)
local -a password_options
password_options=(
'(-o --owner)'{-o,--owner}'[Specify the file owner token]:token:'
'(-p --password)'{-p,--password}'[Unlock a password protected file]:password:'
)
_arguments -w -s -S \
${password_args[@]} \
${common_args[@]} \
${password_options[@]} \
${common_options[@]} \
'1:url:()'
;;
version)
local -a version_args
version_args=(
'(- *)--help[Prints help information]'
)
local -a version_options
version_options=(
'(-h --host)'{-h,--host}'[The remote host to upload to]:host:'
)
_arguments -w -s -S \
${version_args[@]} \
${common_args[@]} \
${version_options[@]} \
${common_options[@]}
;;
esac
# vim: ft=zsh sw=2 ts=2 et