From 0e34e2b7aa5e390c89246519020759be73499aaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Garc=C3=ADa=20Amor?= Date: Wed, 13 Mar 2019 18:52:36 +0100 Subject: [PATCH] Added zsh completion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Óscar García Amor --- contrib/completions/zsh/_ffsend | 233 ++++++++++++++++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 contrib/completions/zsh/_ffsend diff --git a/contrib/completions/zsh/_ffsend b/contrib/completions/zsh/_ffsend new file mode 100644 index 0000000..b789679 --- /dev/null +++ b/contrib/completions/zsh/_ffsend @@ -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