#compdef hardlink local ign local -a args (( $#words > 2 )) && ign='!(- *)' if _pick_variant linux=util-linux jak -V; then args=( '(-c --content -p --ignore-mode -o --ignore-owner -t --ignore-time)'{-c,--content}'[compare only file contents, same as -pot]' '(-b --io-size)'{-b+,--io-size=}'[specify I/O buffer size for file reading]: :_numbers "IO buffer size" K M G T P' '(-d --respect-dir)'{-d,--respect-dir}'[directory names have to be identical]' '(-F --prioritize-trees)'{-F,--prioritize-trees}'[keep files found in the earliest specified top-level]' '(-l --list-duplicates)'{-l,--list-duplicates}"[just list paths of duplicates, don't link them]" '--mount[stay within the same filesystem]' '(-q --quiet)'{-q,--quiet}"[quiet mode - don't print anything]" '(-r --cache-size)'{-r+,--cache-size=}'[specify memory limit for cached file content data]: :_numbers size K M G T P' '(--skip-reflinks)--reflink=-[create clone/CoW copies]::when [auto]:(auto always never)' '--skip-reflinks[skip already cloned files]' '(-S --maximum-size)'{-S+,--maximum-size=}'[specify maximum size for files]: :_numbers -u bytes -d 0 size K M G T P E Z Y' '--exclude-subtree[specify regular expression to exclude directories]:regex' '(-X --respect-xattrs)'{-X,--respect-xattrs}'[respect extended attributes]' '(-y --method)'{-y+,--method=}'[specify file content comparison method]:method [sha256]:(sha256 sha1 crc32c memcmp)' '(-z --zero)'{-z,--zero}'[delimit output with NULs instead of newlines]' ) fi _arguments -S -s $args \ '(-f --respect-name)'{-f,--respect-name}'[filenames have to be identical]' \ '(-i --include)'{-i+,--include=}'[regular expression to include files/dirs]:regex' \ '(-m --maximize -M --minimize)'{-m,--maximize}'[keep the file with the most links]' \ '(-M --minimize -m --maximize)'{-M,--minimize}'[keep the file with the fewest links]' \ '(-n --dry-run)'{-n,--dry-run}"[don't actually link anything]" \ '(-o --ignore-owner -c --content)'{-o,--ignore-owner}'[ignore owner changes]' \ '(-O --keep-oldest)'{-O,--keep-oldest}'[keep the oldest file of multiple equal files]' \ '(-p --ignore-mode -c --content)'{-p,--ignore-mode}'[ignore changes of file mode]' \ '(-s --minimum-size)'{-s+,--minimum-size=}'[specify minimum size for files]: :_numbers -u bytes -d 1 size K M G T P E Z Y' \ '(-t --ignore-time -c --content)'{-t,--ignore-time}'[ignore timestamps (when testing for equality)]' \ \*{-v,--verbose}'[more verbose output]' \ '(-x --exclude)'{-x+,--exclude=}'[specify regular expression to exclude files]:regex' \ "$ign"{-h,--help}'[display usage information]' \ "$ign"{-V,--version}'[display version information]' \ '*:file or directory:_files'