rsyncSpec top-level property

FigSpec rsyncSpec
final

Completion spec for rsync CLI

Implementation

final FigSpec rsyncSpec = FigSpec(
  name: 'rsync',
  description: 'Rsync is a file transfer program capable of efficient remote update via a fast differencing algorithm',
  args: [

    Arg(
      name: 'SRC',
      isVariadic: true,
      generators: [

        Generator(
          template: ['history', 'filepaths', 'folders']
        )
      ]
    ),
    Arg(
      name: 'DEST',
      generators: [

        Generator(
          template: ['history', 'filepaths', 'folders']
        )
      ]
    )
  ],
  options: [

    Option(
      name: ['-v', '--verbose'],
      description: 'Increase verbosity'
    ),
    Option(
      name: '--info',
      description: 'Fine-grained informational verbosity'
    ),
    Option(
      name: '--debug',
      description: 'Fine-grained debug verbosity'
    ),
    Option(
      name: '--msgs2stderr',
      description: 'Special output handling for debugging'
    ),
    Option(
      name: ['--quiet', '-q'],
      description: 'Suppress non-error messages'
    ),
    Option(
      name: '--no-motd',
      description: 'Suppress daemon-mode MOTD (see manpage caveat)'
    ),
    Option(
      name: ['--checksum', '-c'],
      description: 'Skip based on checksum, not mod-time & size'
    ),
    Option(
      name: ['-a', '--archive'],
      description: 'Archive mode; equals -rlptgoD (no -H,-A,-X)',
      exclusiveOn: ['-H', '-A', '-X']
    ),
    Option(
      name: '--no-OPTION',
      description: 'Turn off an implied OPTION (e.g. --no-D)'
    ),
    Option(
      name: ['-r', '--recursive'],
      description: 'Recurse into directories'
    ),
    Option(
      name: ['-R', '--relative'],
      description: 'Use relative path names'
    ),
    Option(
      name: '--no-implied-dirs',
      description: 'Don\'t send implied dirs with --relative',
      dependsOn: ['--relative']
    ),
    Option(
      name: ['-b', '--backup'],
      description: 'Make backups (see --suffix & --backup-dir)'
    ),
    Option(
      name: '--backup-dir',
      description: 'Make backups into hierarchy based in DIR',
      args: [
        Arg(
        name: 'DIR',
        template: 'folders'
      )
      ]
    ),
    Option(
      name: '--suffix',
      description: 'Set backup suffix (default ~ w/o --backup-dir)',
      args: [
        Arg(
        name: 'SUFFIX'
      )
      ]
    ),
    Option(
      name: ['-u', '--update'],
      description: 'Skip files that are newer on the receiver'
    ),
    Option(
      name: '--inplace',
      description: 'Update destination files in-place (SEE MAN PAGE)'
    ),
    Option(
      name: '--append',
      description: 'Append data onto shorter files'
    ),
    Option(
      name: '--append-verify',
      description: 'Like --append, but with old data in file checksum'
    ),
    Option(
      name: ['-d', '--dirs'],
      description: 'Transfer directories without recursing',
      args: [
        Arg(
        name: 'DIR',
        template: 'folders'
      )
      ]
    ),
    Option(
      name: ['-l', '--links'],
      description: 'Copy symlinks as symlinks'
    ),
    Option(
      name: ['-L', '--copy-links'],
      description: 'Transform symlink into referent file/dir'
    ),
    Option(
      name: '--copy-unsafe-links',
      description: 'Only "unsafe" symlinks are transformed'
    ),
    Option(
      name: '--safe-links',
      description: 'Ignore symlinks that point outside the source tree'
    ),
    Option(
      name: '--munge-links',
      description: 'Munge symlinks to make them safer (but unusable)'
    ),
    Option(
      name: ['-k', '--copy-dirlinks'],
      description: 'Transform symlink to a dir into referent dir'
    ),
    Option(
      name: ['-K', '--keep-dirlinks'],
      description: 'Treat symlinked dir on receiver as dir'
    ),
    Option(
      name: ['-H', '--hard-links'],
      description: 'Preserve hard links'
    ),
    Option(
      name: ['-p', '--perms'],
      description: 'Preserve permissions'
    ),
    Option(
      name: ['-E', '--executability'],
      description: 'Preserve the file\'s executability'
    ),
    Option(
      name: '--chmod',
      description: 'Affect file and/or directory permissions',
      args: [
        Arg(
        name: 'CHMOD'
      )
      ]
    ),
    Option(
      name: ['-A', '--acls'],
      description: 'Preserve ACLs (implies --perms)',
      dependsOn: ['--perms']
    ),
    Option(
      name: ['-X', '--xattrs'],
      description: 'Preserve extended attributes'
    ),
    Option(
      name: ['-o', '--owner'],
      description: 'Preserve owner (super-user only)'
    ),
    Option(
      name: ['-g', '--group'],
      description: 'Preserve group'
    ),
    Option(
      name: '--devices',
      description: 'Preserve device files (super-user only)'
    ),
    Option(
      name: '--copy-devices',
      description: 'Copy device contents as regular file'
    ),
    Option(
      name: '--specials',
      description: 'Preserve special files'
    ),
    Option(
      name: '-D',
      description: 'Same as --devices --specials'
    ),
    Option(
      name: ['-t', '--times'],
      description: 'Preserve modification times'
    ),
    Option(
      name: ['-O', '--omit-dir-times'],
      description: 'Omit directories from --times',
      dependsOn: ['--times'],
      args: [
        Arg(
        name: 'DIR',
        template: 'folders',
        isVariadic: true
      )
      ]
    ),
    Option(
      name: ['-J', '--omit-link-times'],
      description: 'Omit symlinks from --times',
      dependsOn: ['--times']
    ),
    Option(
      name: '--super',
      description: 'Receiver attempts super-user activities'
    ),
    Option(
      name: '--fake-super',
      description: 'Store/recover privileged attrs using xattrs'
    ),
    Option(
      name: ['-S', '--sparse'],
      description: 'Turn sequences of nulls into sparse blocks'
    ),
    Option(
      name: '--preallocate',
      description: 'Allocate dest files before writing them'
    ),
    Option(
      name: ['-n', '--dry-run'],
      description: 'Perform a trial run with no changes made'
    ),
    Option(
      name: ['-W', '--whole-file'],
      description: 'Copy files whole (without delta-xfer algorithm)'
    ),
    Option(
      name: '--checksum-choice',
      description: 'Choose the checksum algorithms',
      args: [
        Arg(
        name: 'ALGORITHM',
        suggestions: [

          FigSuggestion(name: 'auto'),
          FigSuggestion(name: 'md4'),
          FigSuggestion(name: 'md5'),
          FigSuggestion(name: 'none')
        ]
      )
      ]
    ),
    Option(
      name: ['-x', '--one-file-system'],
      description: 'Don\'t cross filesystem boundaries'
    ),
    Option(
      name: ['-B', '--block-size'],
      description: 'Force a fixed checksum block-size',
      args: [
        Arg(
        name: 'SIZE'
      )
      ]
    ),
    Option(
      name: ['-e', '--rsh'],
      description: 'Specify the remote shell to use',
      args: [
        Arg(
        name: 'COMMAND'
      )
      ]
    ),
    Option(
      name: '--rsync-path',
      description: 'Specify the rsync to run on the remote machine',
      args: [
        Arg(
        name: 'PATH'
      )
      ]
    ),
    Option(
      name: '--existing',
      description: 'Skip creating new files on receiver'
    ),
    Option(
      name: '--ignore-existing',
      description: 'Skip updating files that already exist on receiver'
    ),
    Option(
      name: '--remove-source-files',
      description: 'Sender removes synchronized files (non-dirs)'
    ),
    Option(
      name: '--delete',
      description: 'Delete extraneous files from destination dirs'
    ),
    Option(
      name: '--delete-before',
      description: 'Receiver deletes before transfer, not during'
    ),
    Option(
      name: ['--delete-during', '--del'],
      description: 'Receiver deletes during the transfer'
    ),
    Option(
      name: '--delete-delay',
      description: 'Find deletions during, delete after'
    ),
    Option(
      name: '--delete-after',
      description: 'Receiver deletes after transfer, not during'
    ),
    Option(
      name: '--delete-excluded',
      description: 'Also delete excluded files from destination dirs'
    ),
    Option(
      name: '--ignore-missing-args',
      description: 'Ignore missing source args without error'
    ),
    Option(
      name: '--delete-missing-args',
      description: 'Delete missing source args from destination'
    ),
    Option(
      name: '--ignore-errors',
      description: 'Delete even if there are I/O errors'
    ),
    Option(
      name: '--force',
      description: 'Force deletion of directories even if not empty'
    ),
    Option(
      name: '--max-delete',
      description: 'Don\'t delete more than NUM files',
      args: [
        Arg(
        name: 'NUM'
      )
      ]
    ),
    Option(
      name: '--max-size',
      description: 'Don\'t transfer any file larger than SIZE',
      args: [
        Arg(
        name: 'SIZE'
      )
      ]
    ),
    Option(
      name: '--min-size',
      description: 'Don\'t transfer any file smaller than SIZE',
      args: [
        Arg(
        name: 'SIZE'
      )
      ]
    ),
    Option(
      name: '--partial',
      description: 'Keep partially transferred files'
    ),
    Option(
      name: '--partial-dir=DIR',
      description: 'Put a partially transferred file into DIR',
      args: [
        Arg(
        name: 'DIR',
        template: 'folders'
      )
      ]
    ),
    Option(
      name: '--delay-updates',
      description: 'Put all updated files into place at transfer\'s end'
    ),
    Option(
      name: ['-m', '--prune-empty-dirs'],
      description: 'Prune empty directory chains from the file-list'
    ),
    Option(
      name: '--numeric-ids',
      description: 'Don\'t map uid/gid values by user/group name'
    ),
    Option(
      name: '--usermap',
      description: 'Custom username mapping',
      args: [
        Arg(
        name: 'STRING'
      )
      ]
    ),
    Option(
      name: '--groupmap',
      description: 'Custom groupname mapping',
      args: [
        Arg(
        name: 'STRING'
      )
      ]
    ),
    Option(
      name: '--chown=USER:GROUP',
      description: 'Simple username/groupname mapping',
      args: [
        Arg(
        name: 'USER:GROUP'
      )
      ]
    ),
    Option(
      name: '--timeout',
      description: 'Set I/O timeout in seconds',
      args: [
        Arg(
        name: 'SECONDS'
      )
      ]
    ),
    Option(
      name: '--contimeout',
      description: 'Set daemon connection timeout in seconds',
      args: [
        Arg(
        name: 'SECONDS'
      )
      ]
    ),
    Option(
      name: ['-I', '--ignore-times'],
      description: 'Don\'t skip files that match in size and mod-time'
    ),
    Option(
      name: '-M',
      description: 'Send OPTION to the remote side only',
      args: [
        Arg(
        name: 'OPTION'
      )
      ]
    ),
    Option(
      name: '--remote-option',
      description: 'Send OPTION to the remote side only',
      args: [
        Arg(
        name: 'OPTION'
      )
      ]
    ),
    Option(
      name: '--size-only',
      description: 'Skip files that match in size'
    ),
    Option(
      name: '-@',
      description: 'Set the accuracy for mod-time comparisons',
      args: [
        Arg(
        name: 'NUM'
      )
      ]
    ),
    Option(
      name: '--modify-window',
      description: 'Set the accuracy for mod-time comparisons',
      args: [
        Arg(
        name: 'NUM'
      )
      ]
    ),
    Option(
      name: '-T',
      description: 'Create temporary files in directory DIR',
      args: [
        Arg(
        name: 'DIR',
        template: 'folders'
      )
      ]
    ),
    Option(
      name: '--temp-dir',
      description: 'Create temporary files in directory DIR',
      args: [
        Arg(
        name: 'DIR',
        template: 'folders'
      )
      ]
    ),
    Option(
      name: ['-y', '--fuzzy'],
      description: 'Find similar file for basis if no dest file'
    ),
    Option(
      name: '--compare-dest',
      description: 'Also compare destination files relative to DIR',
      args: [
        Arg(
        name: 'DIR',
        template: 'folders'
      )
      ]
    ),
    Option(
      name: '--copy-dest',
      description: 'Also compare destination files relative to DIR and include copies of unchanged files',
      args: [
        Arg(
        name: 'DIR',
        template: 'folders'
      )
      ]
    ),
    Option(
      name: '--link-dest',
      description: 'Hardlink to files in DIR when unchanged',
      args: [
        Arg(
        name: 'DIR',
        template: 'folders'
      )
      ]
    ),
    Option(
      name: ['-z', '--compress'],
      description: 'Compress file data during the transfer'
    ),
    Option(
      name: '--compress-level',
      description: 'Explicitly set compression level',
      args: [
        Arg(
        name: 'NUM'
      )
      ]
    ),
    Option(
      name: '--skip-compress',
      description: 'Skip compressing files with a suffix in LIST',
      args: [
        Arg(
        name: 'LIST'
      )
      ]
    ),
    Option(
      name: ['-C', '--cvs-exclude'],
      description: 'Auto-ignore files the same way CVS does'
    ),
    Option(
      name: '-f',
      description: 'Add a file-filtering RULE',
      args: [
        Arg(
        name: 'RULE'
      )
      ]
    ),
    Option(
      name: '--filter',
      description: 'Add a file-filtering RULE',
      args: [
        Arg(
        name: 'RULE'
      )
      ]
    ),
    Option(
      name: '-F',
      description: 'Same as --filter=\'dir-merge /.rsync-filter\'',
      args: [
        Arg(
        name: 'DIR',
        template: 'folders',
        isVariadic: true
      )
      ]
    ),
    Option(
      name: '--exclude',
      description: 'Exclude files matching PATTERN',
      args: [
        Arg(
        name: 'PATTERN'
      )
      ]
    ),
    Option(
      name: '--exclude-from',
      description: 'Read exclude patterns from FILE',
      args: [
        Arg(
        name: 'FILE',
        template: 'filepaths'
      )
      ]
    ),
    Option(
      name: '--include',
      description: 'Don\'t exclude files matching PATTERN',
      args: [
        Arg(
        name: 'PATTERN'
      )
      ]
    ),
    Option(
      name: '--include-from',
      description: 'Read include patterns from FILE',
      args: [
        Arg(
        name: 'FILE',
        template: 'filepaths'
      )
      ]
    ),
    Option(
      name: '--files-from',
      description: 'Read list of source-file names from FILE',
      args: [
        Arg(
        name: 'FILE',
        template: 'filepaths'
      )
      ]
    ),
    Option(
      name: ['-0', '--from0'],
      description: 'All *-from/filter files are delimited by 0s'
    ),
    Option(
      name: ['-s', '--protect-args'],
      description: 'No space-splitting; only wildcard special-chars'
    ),
    Option(
      name: '--address',
      description: 'Bind address for outgoing socket to daemon',
      args: [
        Arg(
        name: 'ADDRESS'
      )
      ]
    ),
    Option(
      name: '--port',
      description: 'Specify double-colon alternate port number',
      args: [
        Arg(
        name: 'PORT'
      )
      ]
    ),
    Option(
      name: '--sockopts',
      description: 'Specify custom TCP options',
      args: [
        Arg(
        name: 'OPTIONS'
      )
      ]
    ),
    Option(
      name: '--blocking-io',
      description: 'Use blocking I/O for the remote shell'
    ),
    Option(
      name: '--stats',
      description: 'Give some file-transfer stats'
    ),
    Option(
      name: ['-8', '--8-bit-output'],
      description: 'Leave high-bit chars unescaped in output'
    ),
    Option(
      name: ['-h', '--human-readable'],
      description: 'Output numbers in a human-readable format'
    ),
    Option(
      name: '--progress',
      description: 'Show progress during transfer'
    ),
    Option(
      name: '-P',
      description: 'Same as --partial --progress'
    ),
    Option(
      name: ['-i', '--itemize-changes'],
      description: 'Output a change-summary for all updates'
    ),
    Option(
      name: '--out-format',
      description: 'Output updates using the specified FORMAT',
      args: [
        Arg(
        name: 'FORMAT'
      )
      ]
    ),
    Option(
      name: '--log-file',
      description: 'Log what we\'re doing to the specified FILE',
      args: [
        Arg(
        name: 'FILE',
        template: 'filepaths'
      )
      ]
    ),
    Option(
      name: '--log-file-format',
      description: 'Log updates using the specified FMT',
      args: [
        Arg(
        name: 'FMT'
      )
      ]
    ),
    Option(
      name: '--password-file',
      description: 'Read daemon-access password from FILE',
      args: [
        Arg(
        name: 'FILE',
        template: 'filepaths'
      )
      ]
    ),
    Option(
      name: '--list-only',
      description: 'List the files instead of copying them'
    ),
    Option(
      name: '--bwlimit',
      description: 'Limit socket I/O bandwidth',
      args: [
        Arg(
        name: 'RATE'
      )
      ]
    ),
    Option(
      name: '--stop-at',
      description: 'Stop rsync at year-month-dayThour:minute',
      args: [
        Arg(
        name: 'y-m-dTh:m'
      )
      ]
    ),
    Option(
      name: '--time-limit',
      description: 'Stop rsync after MINS minutes have elapsed',
      args: [
        Arg(
        name: 'MINS'
      )
      ]
    ),
    Option(
      name: '--outbuf',
      description: 'Set output buffering to None, Line, or Block',
      args: [
        Arg(
        name: 'BUFFER',
        suggestions: [

          FigSuggestion(name: 'N'),
          FigSuggestion(name: 'L'),
          FigSuggestion(name: 'B')
        ]
      )
      ]
    ),
    Option(
      name: '--write-batch',
      description: 'Write a batched update to FILE',
      args: [
        Arg(
        name: 'FILE',
        template: 'filepaths'
      )
      ]
    ),
    Option(
      name: '--only-write-batch',
      description: 'Like --write-batch but w/o updating destination',
      args: [
        Arg(
        name: 'FILE',
        template: 'filepaths'
      )
      ]
    ),
    Option(
      name: '--read-batch',
      description: 'Read a batched update from FILE',
      args: [
        Arg(
        name: 'FILE',
        template: 'filepaths'
      )
      ]
    ),
    Option(
      name: '--protocol',
      description: 'Force an older protocol version to be used',
      args: [
        Arg(
        name: 'NUM'
      )
      ]
    ),
    Option(
      name: '--iconv',
      description: 'Request charset conversion of filenames',
      args: [
        Arg(
        name: 'CONVERT_SPEC'
      )
      ]
    ),
    Option(
      name: '--checksum-seed',
      description: 'Set block/file checksum seed (advanced)',
      args: [
        Arg(
        name: 'NUM'
      )
      ]
    ),
    Option(
      name: '--noatime',
      description: 'Do not alter atime when opening source files'
    ),
    Option(
      name: ['-4', '--ipv4'],
      description: 'Prefer IPv4'
    ),
    Option(
      name: ['-6', '--ipv6'],
      description: 'Prefer IPv6'
    ),
    Option(
      name: '--version',
      description: 'Print version number'
    ),
    Option(
      name: ['-h', '--help'],
      description: 'Show help for rsync (-h is --help only if used alone)'
    )
  ]
);