# bash completion for cdrecord/wodim -*- shell-script -*- _cdrecord() { local cur prev words cword _init_completion -n = || return local generic_options track_options track_mode # foo=bar style option if [[ $cur == *=* ]]; then prev=${cur%%=*} cur=${cur#*=} case $prev in textfile | cuefile | msifile) _filedir ;; blank) COMPREPLY=($(compgen -W 'help all fast track unreserve trtail unclose session' -- "$cur")) ;; driveropts) if [[ $cur == *=* ]]; then prev=${cur%%=*} cur=${cur#*=} case $prev in varirec) COMPREPLY=($(compgen -W "-2 -1 0 1 2" -- "$cur")) ;; gigarec) COMPREPLY=($(compgen -W "0.6 0.7 0.8 1.0 1.2 1.3 1.4" -- "$cur")) ;; tattoofile) _filedir ;; esac else COMPREPLY=($(compgen -W 'burnfree noburnfree varirec= gigarec= audiomaster forcespeed noforcespeed speedread nospeedread singlesession nosinglesession hidecdr nohidecdr tattooinfo tattoofile=' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi ;; driver) COMPREPLY=($(compgen -W "$($1 driver=help 2>&1 | awk 'NR > 1 { print $1 }') help" -- "$cur")) ;; minbuf) COMPREPLY=($(compgen -W '{25..95}' -- "$cur")) ;; esac return fi generic_options=(-version -v -V -d -silent -force -immed -dummy -clone -dao -sao -tao -raw -raw96r -raw96p -raw16 -multi -msinfo -toc -atip -fix -nofix -waiti -load -lock -eject -format -setdropts -checkdrive -prcap -inq -scanbus --devices -reset -abort -overburn -ignsize -useinfo -packet -noclose -text "debug=" "kdebug=" "minbuf=" "msifile=" "speed=" "blank=" "fs=" "ts=" "dev=" "gracetime=" "timeout=" "driver=" "driveropts=" "defpregap=" "pktsize=" "mcn=" "textfile=" "cuefile=") track_options=(-audio -swab -data -mode2 -xa -xa1 -xa2 -xamix -cdi -isosize -pad -nopad -shorttrack -noshorttrack -preemp -nopreemp -copy -nocopy -scms "isrc=" "index=" "padsize=" "pregap=" "tsize=") # look if previous was either a file or a track option track_mode=0 if ((cword > 1)); then if [[ -f $prev ]]; then track_mode=1 else local opt for opt in "${track_options[@]}"; do if [[ $opt == "$prev" ]]; then track_mode=1 break fi done fi fi # files are always eligible completion _filedir # track options are always available COMPREPLY+=($(compgen -W '${track_options[@]}' -- "$cur")) # general options are no more available after file or track option if ((track_mode == 0)); then COMPREPLY+=($(compgen -W '${generic_options[@]}' -- "$cur")) fi [[ ${COMPREPLY-} == *= ]] && compopt -o nospace } && complete -F _cdrecord cdrecord wodim # ex: filetype=sh