From e595143c423fcb9e8545e9aa21111a2da46578fe Mon Sep 17 00:00:00 2001 From: Clint Adams Date: Thu, 21 Feb 2002 03:21:25 +0000 Subject: completion for cdcd --- Completion/Unix/Command/_cdcd | 101 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 Completion/Unix/Command/_cdcd diff --git a/Completion/Unix/Command/_cdcd b/Completion/Unix/Command/_cdcd new file mode 100644 index 000000000..30b165df2 --- /dev/null +++ b/Completion/Unix/Command/_cdcd @@ -0,0 +1,101 @@ +#compdef cdcd + +typeset -A opt_args + +_cdcd_tracks () +{ + print ${${${(f)"$(cdcd info)"}[3]}/Total tracks: #(#b)([0-9]##)*/$match[1]} +} + +_cdcd_track_list () +{ + print ${1..$(_cdcd_tracks)} +} + +_cdcd_track_list_verbose () +{ + print ${${(M)${(f)"$(cdcd tracks)"}:#(#s) #[0-9]##:*}/(#s) #(#b)([0-9]##):[ >]#? #[^ ]# #(*) ##/$match[1]:${(qqq)match[2]}} +} + +_cdcd_commands () +{ + _arguments \ + ':cdcd command:(( + play\:"play a track" + stop\:"stop plating" + open\:"eject the CD-ROM tray" + eject\:"eject the CD-ROM tray" + close\:"close the CD-ROM tray" + pause\:"pause playing" + resume\:"resume playing" + ff\:"fast forward" + rew\:"rewind" + next\:"advance one track" + prev\:"return to previous track" + getvol\:"get current volume settings" + setvol\:"set volume settings" + status\:"get numerical data regarding the CD status" + info\:"short information about the CD" + tracks\:"list all tracks on the CD" + rndplay\:"play a random track" + list\:"list all CDs in a CD-ROM changer" + slot\:"changes the current CD in the CD-ROM changer" + edit\:"edit information about the disc" + ext\:"Extended information about the disc" + refresh\:"refresh the information about the CD from a CDDB server" + device\:"change the CD-ROM device cdcd will use" + verbose\:"toggle verbosity" + sites\:"edit the server list" + access\:"configure cddb access method" + help\:"display a help message" + ))' +} + +if (( CURRENT == 2 )); then + _cdcd_commands +else + shift words + (( --CURRENT )) + case "$words[1]" in + # sub-commands with no args + stop|open|eject|close|pause|resume|next|prev|getvol) + ;; + status|info|tracks|rndplay|list|slot|refresh) + ;; + # sub-commands with args that cannot be completed + ff|rew|setvol) + ;; + # sub-commands that do not work as expected + access|edit|sites) + ;; + # completeable sub-commands + verbose) + _arguments \ + ':verbose subcommand:(( + on\:"turn verbosity on" + off\:"turn verbosity off"))' + ;; + ext) + _arguments \ + ":ext subcommand:(( + disc\:\"extra information about the disc\" + $(_cdcd_track_list)))" + ;; + device) + compadd "$expl[@]" /dev/cd* /dev/cd*/* + ;; + play) + if (( CURRENT == 2 )); then + _arguments ":play subcommand:(( + $(_cdcd_track_list_verbose)))" + else + shift words + (( --CURRENT )) + _arguments ":play subcommand2:(( + $(_cdcd_track_list_verbose)))" + fi + ;; + help) + _cdcd_commands;; + esac +fi -- cgit 1.4.1