#compdef sqlite sqlite3 local ret opt display_opt sqlite3 local -a options output_modes exclusive dashes [[ $service = sqlite3 ]] && sqlite3=true || unset sqlite3 # sqlite options require a single hyphen, but # sqlite3 allows options with one or two dashes=( '' ) (( $+sqlite3 )) && dashes+=( - ) options=( '(-init --init)'$^dashes'-init[startup file]:file containing SQLite commands:_files' $^dashes'-echo[echo commands]' ) exclusive=( {,-}-{no,}header ) options+=( "($exclusive)"$^dashes'-header[turn headers on]' "($exclusive)"$^dashes'-noheader[turn headers off]' ) output_modes=( column HTML line list ) (( $+sqlite3 )) && output_modes+=( ascii csv quote ) exclusive=( $^dashes-${^output_modes:l} ) for display_opt in $output_modes ; do # finagle the description to match the way SQLite's -help formats them opt=$display_opt:l [[ $opt = $display_opt ]] && display_opt="'$display_opt'" options+=( "($exclusive)"$^dashes"-${opt}[set output mode to $display_opt]" ) done options+=( $^dashes'-separator[set output field separator]:output field separator [|]' $^dashes'-nullvalue[set text string for null values]:string' '(- :)'$^dashes'-version[show SQLite version]' '(- :)'$^dashes'-help[show help]' '1:SQLite database file:_files' '(- :)2:SQL to run' ) (( $+sqlite3 )) && options+=( $^dashes'-bail[stop after hitting an error]' $^dashes'-cmd[run specified command before reading stdin]:sqlite meta-command' '(-*batch -*interactive)'$^dashes'-batch[force batch I/O]' '(-*batch -*interactive)'$^dashes'-interactive[force interactive I/O]' $^dashes'-lookaside[specify size and number of entries for lookaside memory]:size (bytes): :entries' $^dashes'-mmap[set default mmap size]:size' $^dashes'-newline[set output row separator]:separator [\n]' $^dashes'-pagecache[specify size and number of slots for page cache memory]:size (bytes): :slots' $^dashes'-stats[print memory stats before each finalize]' $^dashes'-vfs[use specified default VFS]:vfs:(unix-dotfile unix-excl unix-none unix-namedsem)' ) _arguments $options