#compdef script scriptreplay local args hlp="-h --help -V --version" if [[ $service = scriptreplay ]]; then _arguments -S -s \ "(1 -t --timing $hlp)"{-t+,--timing=}'[specify file containing timing output]:timing file:_files' \ "(2 -s --typescript $hlp)"{-s+,--typescript=}'[specify file containing terminal output]:typescript file:_files' \ "(3 -d --divisor $hlp)"{-d+,--divisor=}'[speed up replay]:factor' \ "(-m --maxdelay $hlp)"{-m+,--maxdelay=}'[set maximum delay between updates]:delay (seconds)' \ '(- *)'{-h,--help}'[display help information]' \ '(- *)'{-V,--version}'[display version information]' \ "(-t --timing $hlp):timing file:_files" \ "(-s --typescript $hlp):typescript file:_files" \ "(-d --divisor $hlp): :_guard '[0-9.]#' 'timing divisor'" return fi case $OSTYPE in linux*) args=( -S "(-a --append $hlp)"{-a,--append}'[append output]' "(-c --command $hlp)"{-c,--command=}'[run specified command instead of a shell]:command:_cmdstring' "(-e --return $hlp)"{-e,--return}'[return exit status of the child process]' "(-f --flush $hlp)"{-f,--flush}'[flush output after each write]' "($hlp)--force[use output file even when it is a link]" '(-o --output-limit)'{-o+,--output-limit=}'[terminate if output files exceed specified size]:size (bytes)' "(-q --quiet $hlp)"{-q,--quiet}'[be quiet]' "(-t --timing $hlp)"{-t-,--timing=-}'[output timing data]::timing file:_files' '(- 1)'{-h,--help}'[display help information]' '(- 1)'{-V,--version}'[display version information]' ) ;; darwin*|dragonfly*|netbsd*|freebsd*) args=( '-q[be quiet: suppress display of starting and ending lines]' ) ;| netbsd*|freebsd*) args+=( '(-a -r -k)-d[suppress sleeps when playing back a session]' '(-a -r -k -t)-p[play back a recorded session]' '(-d -p)-r[record a session with input, output and timing data]' ) ;| netbsd*|openbsd*) args+=( '-c[run specified command instead of a shell]:command:_cmdstring' ) ;| netbsd*) args+=( '-f[flush output after each write]' ) ;| freebsd*) args+=( '-f[use filemon(4)]' ) ;| darwin*|dragonfly*|freebsd*) args+=( '-t+[specify interval of data flushing]:interval (seconds)' '-k[log keys sent to the program as well as output]' '*:::arguments: _normal' ) ;| *) args+=( '(-p -d)-a[append output]' ) ;; esac _arguments -s $args \ "($hlp):typescript file:_files"