# bash completion for cdrecord/wodim have cdrecord || have wodim && _cdrecord() { local cur prev i generic_options track_options track_mode COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} # foo=bar style option if [[ "$cur" == *=* ]]; then prev=${cur/=*/} cur=${cur/*=/} case $prev in textfile|cuefile) _filedir return 0 ;; blank) COMPREPLY=( $( compgen -W 'help all fast \ track unreserve trtail unclose session' \ -- "$cur" ) ) return 0 ;; driveropts) COMPREPLY=( $( compgen -W 'burnfree noburnfree\ varirec= audiomaster forcespeed noforcespeed\ speedread nospeedread singlesession \ nosinglesession hidecdr nohidecdr tattooinfo\ tattoofile=' -- "$cur" ) ) return 0 ;; esac fi generic_options=(-version -v -V -d -silent -force -immed -dummy \ -dao -raw -raw96r -raw96p -raw16 -multi -msinfo -toc \ -atip -fix -nofix -waiti -load -lock -eject -format \ -setdropts -checkdrive -prcap -inq -scanbus -reset \ -abort -overburn -ignsize -useinfo -packet -noclose \ -text debug= kdebug= kd= minbuf= speed= blank= fs= \ dev= gracetime= timeout= driver= driveropts= \ defpregap= pktsize= mcn= textfile= cuefile=) track_options=(-audio -swab -data -mode2 -xa -xa1 -xa2 -xamix -cdi \ -isosize -pad padsize= -nopad -shorttrack -noshorttrack\ pregap= -preemp -nopreemp -copy -nocopy -scms tcsize= \ isrc= index=) # look if previous was either a file or a track option track_mode=0 if [ $COMP_CWORD -gt 1 ]; then if [ -f "$prev" ]; then track_mode=1 else for (( i=0; i < ${#track_options[@]}; i++ )); do if [[ "${track_options[i]}" == "$prev" ]]; then track_mode=1 break fi done fi fi # files are always eligible completion _filedir # track options are always available COMPREPLY=( "${COMPREPLY[@]}" \ $( compgen -W '${track_options[@]}' -- "$cur" ) ) # general options are no more available after file or track option if [ $track_mode -eq 0 ]; then COMPREPLY=( "${COMPREPLY[@]}" \ $( compgen -W '${generic_options[@]}' -- "$cur" ) ) fi } && complete -F _cdrecord -o filenames cdrecord wodim # Local variables: # mode: shell-script # sh-basic-offset: 4 # sh-indent-comment: t # indent-tabs-mode: nil # End: # ex: ts=4 sw=4 et filetype=sh