瀏覽代碼

Added zsh completion

Signed-off-by: Óscar García Amor <ogarcia@connectical.com>
Óscar García Amor 6 年之前
父節點
當前提交
0e34e2b7aa
共有 1 個文件被更改,包括 233 次插入0 次删除
  1. 233 0
      contrib/completions/zsh/_ffsend

+ 233 - 0
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