summary refs log tree commit diff
path: root/Completion/Unix/Command/_rclone
blob: 40f06e0bacfd6801160c497c78ffb6156ca08b02 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
#compdef rclone

local curcontext="$curcontext" ret=1
local -A opt_args
local -a state line commands remotes

commands=(
  "about\:'get quota information from the remote'"
  "authorize\:'remote authorization'"
  "cachestats\:'print cache stats for a remote'"
  "cat\:'concatenate any files and send them to stdout'"
  "check\:'check files on the source and destination match'"
  "cleanup\:'clean up the remote if possible'"
  "config\:'enter an interactive configuration session'"
  "copy\:'copy files from source to dest, skipping already copied'"
  "copyto\:'copy files from source to dest, skipping already copied'"
  "copyurl\:'copy url content to dest'"
  "cryptcheck\:'check the integrity of a crypted remote'"
  "cryptdecode\:'return unencrypted file names'"
  "dbhashsum\:'produce a Dropbox hash file for all the objects in the path'"
  "dedupe\:'interactively find duplicate files and delete/rename them'"
  "delete\:'remove the contents of path'"
  "deletefile\:'remove a single file from remote'"
  "genautocomplete\:'output completion script for a given shell'"
  "gendocs\:'output markdown docs for rclone to the directory supplied'"
  "hashsum\:'produce an hashsum file for all the objects in the path'"
  "help\:'show help for rclone commands, flags and backends'"
  "link\:'generate public link to file/folder'"
  "listremotes\:'list all the remotes in the config file'"
  "ls\:'list the objects in the path with size and path'"
  "lsd\:'list all directories/containers/buckets in the path'"
  "lsf\:'list directories and objects on remote:path formatted for parsing'"
  "lsjson\:'list directories and objects in the path in JSON format'"
  "lsl\:'list the objects in path with modification time, size and path'"
  "md5sum\:'produce an md5sum file for all the objects in the path'"
  "mkdir\:'make the path if it does not already exist'"
  "mount\:'mount the remote as file system on a mountpoint'"
  "move\:'move files from source to dest'"
  "moveto\:'move file or directory from source to dest'"
  "ncdu\:'explore a remote with a text based user interface'"
  "obscure\:'obscure password for use in the rclone.conf'"
  "purge\:'remove the path and all of its contents'"
  "rc\:'run a command against a running rclone'"
  "rcat\:'copy standard input to file on remote'"
  "rcd\:'run rclone listening to remote control commands only'"
  "rmdir\:'remove the path if empty'"
  "rmdirs\:'remove empty directories under the path'"
  "serve\:'serve a remote over a protocol'"
  "settier\:'change storage class/tier of objects on remote'"
  "sha1sum\:'produce an sha1sum file for all the objects in the path'"
  "size\:'print the total size and number of objects on remote:path'"
  "sync\:'make source and dest identical, modifying destination only'"
  "touch\:'create new file or change file modification time'"
  "tree\:'list the contents of the remote in a tree like fashion'"
  "version\:'show the version number'"
)

_arguments -C \
  ":command:(($commands))" \
  '--ask-password[prompt for password for encrypted configuration]' \
  "--auto-confirm[don't request console confirmation]" \
  '--backup-dir[make backups into hierarchy based at specified directory]:directory:_directories' \
  '--bind[specify socal address to bind to for outgoing connections]:IPv4, IPv6 or name' \
  '--buffer-size[specify in memory buffer size when reading files for each --transfer]:size [16M]' \
  '--bwlimit[specify bandwidth limit]:BwTimetable (kBytes/s or b|k|M|G suffix)' \
  '--cache-dir[specify directory rclone will use for caching]:directory [~/.cache/rclone]:_directories' \
  '--checkers[specify number of checkers to run in parallel]:number [8]': \
  '(-c --checksum)'{-c,--checksum}'[skip based on checksum & size, not mod-time & size]' \
  '--config[specify config file]:file [~/.config/rclone/rclone.conf]:_files' \
  '--contimeout[specify connect timeout]:duration [1m0s]' \
  '--cpuprofile[write cpu profile to specified file]:file:_files' \
  '(--delete-before --delete-during)--delete-after[when synchronizing, delete files on destination after transferring (default)]' \
  '(--delete-after --delete-during)--delete-before[when synchronizing, delete files on destination before transferring]' \
  '(--delete-before --delete-after)--delete-during[when synchronizing, delete files during transfer]' \
  '--delete-excluded[delete files on dest excluded from sync]' \
  '--disable[disable a comma separated list of features]:feature' \
  '(-n --dry-run)'{-n,--dry-run}'[do a trial run with no permanent changes]' \
  '--dump[list of items to dump from]:string:_sequence compadd - headers bodies requests responses auth filters goroutines openfiles' \
  '--dump-bodies[dump HTTP headers and bodies - may contain sensitive info]' \
  '--dump-headers[dump HTTP headers - may contain sensitive info]' \
  '--exclude[exclude files matching pattern]:stringArray' \
  '--exclude-from[read exclude patterns from file]:files:_files' \
  '--exclude-if-present[exclude directories if filename is present]:string' \
  '--fast-list[use recursive list if available]' \
  '--files-from[read list of source-file names from file]:file:_files' \
  {-f,--filter}'[add a file-filtering rule]:stringArray' \
  '--filter-from[read filtering patterns from a file]:file:_files' \
  '--ignore-case[ignore case in filters (case insensitive)]' \
  '--ignore-case-sync[ignore case when synchronizing]' \
  '--ignore-checksum[skip post copy check of checksums]' \
  '--ignore-errors[delete even if there are I/O errors]' \
  '--ignore-existing[skip all files that exist on destination]' \
  '--ignore-size[ignore size when skipping use mod-time or checksum]' \
  '(-I --ignore-times)'{-I,--ignore-times}"[don't skip files that match on size and time - transfer all files]" \
  "--immutable[don't modify files, fail if existing files have been modified]" \
  '--include[include files matching pattern]:stringArray' \
  '--include-from[read include patterns from file]:file:_files' \
  '--log-file[log everything to this file]:file:_files' \
  '--log-format[specify comma separated list of log format options]:string ["date,time"]' \
  '--log-level[specify log level]:string [NOTICE]:(DEBUG INFO NOTICE ERROR)'  \
  '--low-level-retries[number of low level retries to do]:int [10]' \
  '--max-age[only transfer files younger than this in s or suffix ms|s|m|h|d|w|M|y]:duration [default off]' \
  '--max-backlog[maximum number of objects in sync or check backlog]:int [10000]' \
  '--max-delete[when synchronizing, limit the number of deletes]:delete limit [-1]' \
  '--max-depth[limit the recursion depth]:depth [-1]' \
  '--max-size[only transfer files smaller than this in k or suffix b|k|M|G]:int [default off]' \
  '--max-transfer[maximum size of data to transfer]:int [default off]' \
  '--memprofile[write memory profile to file]:file:_files' \
  '--min-age[only transfer files older than this in s or suffix ms|s|m|h|d|w|M|y]:duration [default off]' \
  '--min-size[only transfer files bigger than this in k or suffix b|k|M|G]:int [default off]' \
  '--modify-window[specify max time delta to be considered the same]:duration [1ns]' \
  '--multi-thread-cutoff[use multi-threaded downloads for files above specified size]:size (250M)' \
  '--multi-thread-streams[specify max number of streams to use for multi-threaded downloads]:number (4)' \
  "--no-check-certificate[don't verify the server SSL certificate (insecure)]" \
  "--no-gzip-encoding[don't set Accept-Encoding: gzip]" \
  '!--no-traverse' \
  "--no-update-modtime[don't update destination mod-time if files are identical]" \
  '(-P --progress)'{-P,--progress}'[show progress during transfer]' \
  {-q,--quiet}'[print as little as possible]' \
  '--rc[enable the remote control server]' \
  '--rc-addr[IPaddress\:port or \:port to bind server to]:string [localhost\:5572]' \
  '--rc-cert[SSL PEM key (concatenation of certificate and CA certificate)]:string' \
  '--rc-client-ca[client certificate authority to verify clients with]:string' \
  '--rc-files[path to local files to serve on the HTTP server]:directory:_path_files -/' \
  '--rc-htpasswd[htpasswd file - if not provided no authentication is done]:file:_files' \
  '--rc-job-expire-duration[expire finished async jobs older than specified duration]:duration (1m0s)' \
  '--rc-job-expire-interval[specify interval to check for expired async jobs]:interval (10s)' \
  '--rc-key[SSL PEM Private key]:string' \
  '--rc-max-header-bytes[maximum size of request header]:int [4096]' \
  "--rc-no-auth[don't require auth for certain methods]" \
  '--rc-pass[password for authentication]:string' \
  '--rc-realm[realm for authentication]:string [rclone]' \
  '--rc-serve[enable the serving of remote objects]' \
  '--rc-server-read-timeout[timeout for server reading data]:duration [1h0m0s]' \
  '--rc-server-write-timeout[timeout for server writing data]:duration [1h0m0s]' \
  '--rc-user[user name for authentication]:string' \
  '--retries[retry operations this many times if they fail]:int [3]' \
  '--retries-sleep[interval between retrying operations if they fail, e.g 500ms, 60s, 5m. (0 to disable)]:interval' \
  '--size-only[skip based on size only, not mod-time or checksum]' \
  '--stats[interval between printing stats, e.g 500ms, 60s, 5m. (0 to disable)]:duration [1m0s]' \
  '--stats-file-name-length[max file name length in stats. 0 for no limit]:int [40]' \
  '--stats-log-level[log level to show --stats output]:string [INFO]:(DEBUG INFO NOTICE ERROR)' \
  '--stats-one-line[make the stats fit on one line]' \
  '--stats-one-line-date[enable --stats-one-line and add current date/time prefix]' \
  '--stats-one-line-date-format[enable --stats-one-line-date and use custom formatted date]:date format' \
  '--stats-unit[specify units for data rate in stats]:unit [bytes]:(bits bytes)' \
  '--streaming-upload-cutoff[specify size cutoff for switching to chunked upload]:size [100k]' \
  '--suffix[specify suffix for use with --backup-dir]:string' \
  '--syslog[use syslog for logging]' \
  '--syslog-facility[facility for syslog, eg KERN,USER,...]:string [DAEMON]' \
  '--timeout[specify IO idle timeout]:duration [5m0s]' \
  '--tpslimit[limit HTTP transactions per second to this]:float' \
  '--tpslimit-burst[max burst of transactions for --tpslimit]:int [1]' \
  '--track-renames[when synchronizing, track file renames and do a server side move if possible]' \
  '--transfers[number of file transfers to run in parallel]:int [4]' \
  {-u,--update}'[skip files that are newer on the destination]' \
  '--use-server-modtime[use server modified time instead of object metadata]' \
  '--user-agent[set the user-agent to the specified string]:user-agent [rclone/version]' \
  \*{-v,--verbose}'[print lots more stuff]:count' \
  '--acd-auth-url[auth server URL]:string' \
  '--acd-client-id[Amazon Application Client ID]:string' \
  '--acd-client-secret[Amazon Application Client Secret]:string' \
  '--acd-templink-threshold[files >= this size will be downloaded via their tempLink]:size [9G]' \
  '--acd-token-url[token server url]:string' \
  '--acd-upload-wait-per-gb[additional time per GB to wait after a failed complete upload to see if it appears]:Duration [3m0s]' \
  '--alias-remote[remote or path to alias]:string' \
  '--azureblob-access-tier[access tier of blob: hot, cool or archive]:string' \
  '--azureblob-account[specify storage account name]:string' \
  '--azureblob-chunk-size[upload chunk size (<= 100MB)]:size [4M]' \
  '--azureblob-endpoint[endpoint for the service]:string' \
  '--azureblob-key[storage account key (leave blank to use connection string or SAS URL)]:string' \
  '--azureblob-list-chunk[size of blob list]:int [5000]' \
  '--azureblob-sas-url[SAS URL for container level access only]:string' \
  '--azureblob-upload-cutoff[cutoff for switching to chunked upload (<= 256MB)]:size [256M]' \
  '--b2-account[account ID or application key ID]:string' \
  '--b2-chunk-size[specify upload chunk size]:size [96M]' \
  '--b2-endpoint[endpoint for the service]:string' \
  '--b2-hard-delete[permanently delete files on remote removal, otherwise hide files]' \
  '--b2-key[application key]:string' \
  '--b2-test-mode[a flag string for X-Bz-Test-Mode header for debugging]:string' \
  '--b2-upload-cutoff[cutoff for switching to chunked upload]:size [200M]' \
  '--b2-versions[include old versions in directory listings]' \
  '--box-client-id[specify Box app client Id]:client ID' \
  '--box-client-secret[specify Box app client secret]:secret' \
  '--box-commit-retries[max number of times to try committing a multipart file]:int [100]' \
  '--box-upload-cutoff[cutoff for switching to multipart upload (>= 50MB)]:size [50M]' \
  '--cache-chunk-clean-interval[how often should the cache perform cleanups of the chunk storage]:Duration [1m0s]' \
  '--cache-chunk-no-memory[disable the in-memory cache for storing chunks during streaming]' \
  '--cache-chunk-path[directory to cache chunk files]:directory [~/.cache/rclone/cache-backend]:_path_files -/' \
  '--cache-chunk-size[the size of a chunk (partial file data)]:size [5M]' \
  '--cache-chunk-total-size[the total size that the chunks can take up on the local disk]:size [10G]' \
  '--cache-db-path[directory to store file structure metadata DB]:directory [~/.cache/rclone/cache-backend]:_path_files -/' \
  '--cache-db-purge[clear all the cached data for this remote on start]' \
  '--cache-db-wait-time[how long to wait for the DB to be available - 0 is unlimited]:Duration [1s]' \
  '--cache-info-age[how long to cache file structure information (directory listings, file size, times etc)]:duration [6h0m0s]' \
  '--cache-plex-insecure[skip all certificate verifications when connecting to the Plex server]:string' \
  '--cache-plex-password[the password of the Plex user]:string' \
  '--cache-plex-url[the URL of the Plex server]:string' \
  '--cache-plex-username[the username of the Plex user]:string' \
  '--cache-read-retries[how many times to retry a read from a cache storage]:int [10]' \
  '--cache-remote[remote to cache]:string' \
  '--cache-rps[limits the number of requests per second to the source FS (-1 to disable)]:int [-1]' \
  '--cache-tmp-upload-path[directory to keep temporary files until they are uploaded]:directory:_path_files -/' \
  '--cache-tmp-wait-time[how long should files be stored in local cache before being uploaded]:Duration [15s]' \
  '--cache-workers[how many workers should run in parallel to download chunks]:int [4]' \
  '--cache-writes[cache file data on writes through the FS]' \
  {-L,--copy-links}'[follow symlinks and copy the pointed to item]' \
  '--crypt-directory-name-encryption[option to either encrypt directory names or leave them intact. (default true)]' \
  '--crypt-filename-encryption[specify how to encrypt the filenames]:string [standard]' \
  '--crypt-password[specify password or pass phrase for encryption]:string' \
  '--crypt-password2[specify password or pass phrase for salt]:string' \
  '--crypt-remote[remote to encrypt/decrypt]:string' \
  '--crypt-show-mapping[for all files listed show how the names encrypt]' \
  '--drive-acknowledge-abuse[set to allow files which return cannotDownloadAbusiveFile to be downloaded]' \
  '--drive-allow-import-name-change[allow the filetype to change when uploading Google docs (e.g. file.doc to file.docx)]' \
  '--drive-alternate-export[use alternate export URLs for google documents export.,]' \
  '--drive-auth-owner-only[only consider files owned by the authenticated user]' \
  '--drive-chunk-size[upload chunk size]:size [8M]' \
  '--drive-client-id[Google application client ID]:client ID' \
  '--drive-client-secret[Google application client secret]:secret' \
  '--drive-export-formats[list of preferred formats for downloading Google docs]:comma-separated format list [docx,xlsx,pptx,svg]' \
  '!--drive-formats:string' \
  '--drive-impersonate[impersonate specified user when using a service account]:user' \
  '--drive-import-formats[specify preferred formats for uploading Google docs]:formats' \
  '--drive-keep-revision-forever[keep new head revision of each file forever]' \
  '--drive-list-chunk[size of listing chunk 100-1000. 0 to disable]:int [1000]' \
  '--drive-root-folder-id[specify ID of the root folder]:string' \
  '--drive-scope[scope that rclone should use when requesting access from drive]:scope' \
  '--drive-server-side-across-configs[allow server side operations (eg copy) to work across different drive configs]' \
  '--drive-service-account-credentials[specify service account credentials JSON blob]:string' \
  '--drive-service-account-file[specify service account credentials JSON file path]:file:_files' \
  '--drive-shared-with-me[only show files that are shared with me]' \
  '--drive-size-as-quota[show storage quota usage for file size]' \
  '--drive-skip-gdocs[skip google documents in all listings]' \
  '--drive-team-drive[specify ID of the team drive]:ID' \
  '--drive-trashed-only[only show files that are in the trash]' \
  '--drive-upload-cutoff[cutoff for switching to chunked upload]:size [8M]' \
  '--drive-use-created-date[use file created date instead of modified date.,]' \
  '--drive-use-trash[send files to the trash instead of deleting permanently. (default true)]' \
  "--drive-v2-download-min-size[if object's are larger, use drive v2 API to download]:size [off]" \
  '--dropbox-chunk-size[specify upload chunk size]:size [48M]' \
  '--dropbox-client-id[specify Dropbox app client ID]:client ID' \
  '--dropbox-client-secret[specify Dropbox app client secret]:secret' \
  '--dropbox-impersonate[impersonate specified user]:user' \
  '--ftp-host[specify FTP host to connect to]:host:_hosts' \
  "--ftp-no-check-certificate[don't verify the TLS certificate of the server]" \
  '--ftp-pass[specify FTP password]:password' \
  '--ftp-port[specify FTP port]:port [21]:_ports' \
  '--ftp-tls[use FTP over TLS (implicit)]' \
  '--ftp-user[specify FTP username]::username' \
  '--gcs-bucket-acl[access control list for new buckets]:string' \
  '--gcs-client-id[Google application client id]:client id' \
  '--gcs-client-secret[Google application client secret]:secret' \
  '--gcs-location[specify location for the newly created buckets]:string' \
  '--gcs-object-acl[specify access control list for new objects]:string' \
  '--gcs-project-number[project number]:string' \
  '--gcs-service-account-file[service account credentials JSON file path]:file:_files' \
  '--gcs-storage-class[specify storage class to use when storing objects in Google cloud storage]:string' \
  '--http-url[URL of http host to connect to]:string' \
  '--hubic-chunk-size[above this size files will be chunked into a _segments container]:size [5G]' \
  '--hubic-client-id[Hubic client ID]:client ID' \
  '--hubic-client-secret[Hubic client secret]:secret' \
  '--jottacloud-hard-delete[delete files permanently rather than putting them into the trash]' \
  '--jottacloud-md5-memory-limit[files bigger than this will be cached on disk to calculate the MD5 if required]:size [10M]' \
  '--jottacloud-pass[password]:string' \
  '--jottacloud-unlink[remove existing public link to file/folder with link command rather than creating]' \
  '--jottacloud-user[user name]:string' \
  "--local-no-check-updated[don't check to see if the files change during upload]" \
  "--local-no-unicode-normalization[don't apply unicode normalization to paths and filenames (Deprecated)]" \
  '--local-nounc[disable UNC (long path names) conversion on windows]:string' \
  '(-x --one-file-system)'{-x,--one-file-system}"[don't cross filesystem boundaries (unix/macOS only)]" \
  '--onedrive-chunk-size[chunk size to upload files with - must be multiple of 320k]:size [10M]' \
  '--onedrive-client-id[specify Microsoft app client ID]:client ID' \
  '--onedrive-client-secret[specify Microsoft app client secret]:secret' \
  '--onedrive-drive-id[specify the ID of the drive to use]:string' \
  '--onedrive-drive-type[the type of the drive]:string:(personal business documentLibrary)' \
  '--onedrive-expose-onenote-files[set to make OneNote files show up in directory listings]' \
  '--opendrive-password[specify password]:string' \
  '--opendrive-username[specify username]:string' \
  '--pcloud-client-id[specify Pcloud app client ID]:client ID' \
  '--pcloud-client-secret[specify Pcloud app client secret]:secret' \
  '--s3-access-key-id[specify AWS access key ID]:string' \
  '--s3-acl[canned ACL used when creating buckets and storing or copying objects]:string' \
  '--s3-chunk-size[chunk size to use for uploading]:size [5M]' \
  "--s3-disable-checksum[don't store MD5 checksum with object metadata]" \
  '--s3-endpoint[endpoint for S3 API]:string' \
  '--s3-env-auth[get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars)]' \
  '--s3-force-path-style[if true use path style access if false use virtual hosted style. (default true)]' \
  '--s3-location-constraint[location constraint - must be set to match the region]:string' \
  '--s3-provider[choose your S3 provider]:string' \
  '--s3-region[region to connect to]:string' \
  '--s3-secret-access-key[AWS Secret access key (password)]:string' \
  '--s3-server-side-encryption[the server-side encryption algorithm used when storing this object in S3]:string' \
  '--s3-session-token[an AWS session token]:string' \
  '--s3-sse-kms-key-id[if using KMS ID you must provide the ARN of key]:string' \
  '--s3-storage-class[the storage class to use when storing new objects in S3]:string' \
  '--s3-upload-concurrency[concurrency for multipart uploads]:int [2]' \
  '--s3-v2-auth[if true use v2 authentication]' \
  '--s3-use-accelerate-endpoint[use the AWS S3 accelerated endpoint]' \
  '--sftp-ask-password[allow asking for SFTP password when needed]' \
  '--sftp-disable-hashcheck[disable the execution of SSH commands to determine if remote file hashing is available]' \
  '--sftp-host[SSH host to connect to]:string' \
  '--sftp-key-file[path to unencrypted PEM-encoded private key file, leave blank to use ssh-agent]:string' \
  '--sftp-pass[SSH password, leave blank to use ssh-agent]:string' \
  '--sftp-path-override[override path used by SSH connection]:string' \
  '--sftp-port[SSH port, leave blank to use default]:string [22]' \
  '--sftp-set-modtime[set the modified time on the remote if set. (default true)]' \
  '--sftp-use-insecure-cipher[enable the use of the aes128-cbc cipher]' \
  '--sftp-user[SSH username, leave blank for current username]:string' \
  "--skip-links[don't warn about skipped symlinks]" \
  '--swift-auth[authentication URL for server (OS_AUTH_URL)]:string' \
  '--swift-auth-token[aUTH token from alternate authentication - optional (OS_AUTH_TOKEN)]:string' \
  '--swift-auth-version[AuthVersion - optional - set to (1,2,3) if your auth URL has no version (ST_AUTH_VERSION)]:int' \
  '--swift-chunk-size[above this size files will be chunked into a _segments container]:size [5G]' \
  '--swift-domain[user domain - optional (v3 auth) (OS_USER_DOMAIN_NAME)]:string' \
  '--swift-endpoint-type[endpoint type to choose from the service catalogue (OS_ENDPOINT_TYPE)]:string [public]' \
  '--swift-env-auth[get swift credentials from environment variables in standard OpenStack form]' \
  '--swift-key[API key or password (OS_PASSWORD)]:string' \
  '--swift-region[region name - optional (OS_REGION_NAME)]:string' \
  '--swift-storage-policy[the storage policy to use when creating a new container]:string' \
  '--swift-storage-url[storage URL - optional (OS_STORAGE_URL)]:string' \
  '--swift-tenant[tenant name - optional for v1 auth, this or tenant_id required otherwise (OS_TENANT_NAME or OS_PROJECT_NAME)]:string' \
  '--swift-tenant-domain[tenant domain - optional (v3 auth) (OS_PROJECT_DOMAIN_NAME)]:string' \
  '--swift-tenant-id[tenant ID - optional for v1 auth, this or tenant required otherwise (OS_TENANT_ID)]:string' \
  '--swift-user[user name to log in (OS_USERNAME)]:string' \
  '--swift-user-id[user ID to log in - optional - most swift systems use user and leave this blank (v3 auth) (OS_USER_ID)]:string' \
  '--union-remotes[list of space separated remotes]:string' \
  '--webdav-bearer-token[bearer token instead of user/pass (eg a Macaroon)]:string' \
  '--webdav-pass[password]:string' \
  '--webdav-url[URL of http host to connect to]:string' \
  '--webdav-user[user name]:string' \
  '--webdav-vendor[name of the Webdav site/service/software you are using]:string' \
  '--yandex-client-id[Yandex client ID]:client ID' \
  '--yandex-client-secret[Yandex client secret]:secret' \
  '--yandex-unlink[remove existing public link to file/folder with link command rather than creating]' \
  "*: :->files_or_remotes" \
  && ret=0

if [[ $state == 'files_or_remotes' ]]; then
  remotes=( $(_call_program rclone-remotes rclone listremotes) )
  _alternative \
    "remote:rclone-remotes:compadd -a remotes" \
    "file:files:_files" && ret=0
fi

return ret