about summary refs log tree commit diff
path: root/Completion/Unix/Command/_vorbis
blob: 6c94469f936fe0b59e00fce625cb563ea975127c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#compdef oggenc ogg123 ogginfo oggdec vorbiscomment

local curcontext="$curcontext" ret=1
local -a alts expl state line suf

case $service in
  oggenc)
    _arguments -C -s -S \
      '(-Q --quiet)'{-Q,--quiet}'[produce no output to stderr]' \
      '(- *)'{-h,--help}'[display usage information]' \
      '(- *)'{-V,--version}'[display version information]' \
      '(-k --skeleton)'{-k,--skeleton}'[add an Ogg Skeleton bitstream]' \
      '(-r --raw)'{-r,--raw}'[assume input data is raw, little-endian with no header information]' \
      '(-B --raw-bits)'{-B+,--raw-bits=}'[set raw mode input sample size in bits]:sample size [16]:(8 16)' \
      '(-C --raw-chan)'{-C+,--raw-chan=}'[set raw mode input number of channels]:number of channels [2]' \
      '(-R --raw-rate)'{-R+,--raw-rate=}'[set raw mode input sample rate]:sample rate [44100]:(44100 48000)' \
      '--raw-endianness=[set raw mode endianness]:endianness [0]:((0\:big\ endian 1\:little\ endian))' \
      '(-b --bitrate)'{-b+,--bitrate=}'[set encoding to the bitrate closest to that specified]:bitrate (kb/s)' \
      '--managed[enable the bitrate management engine]' \
      '(-m --min-bitrate)'{-m+,--min-bitrate=}'[set minimum bitrate]:bitrate (kb/s)' \
      '(-M --max-bitrate)'{-M+,--max-bitrate=}'[set maximum bitrate]:bitrate (kb/s)' \
      '*--advanced-encode-option=:option name:_values option
        "lowpass_frequency[set the lowpass frequency]\:frequency (kHz)"
        "impulse_noisetune[set a noise floor bias]\:bias (-15..0)"
        "bitrate_hard_max[set the allowed bitrate maximum for the encoded file]\:bitrate (kb/s)"
        "bitrate_hard_min[set the allowed bitrate minimum for the encoded file]\:bitrate (kb/s)"
        "bit_reservoir_bits[set the total size of the bit reservoir]\:bits"
        "bit_reservoir_bias[set the behavior bias of the bit reservoir]\:bias (0..1)"
        "bitrate_average[set the average bitrate for the file]\:bitrate (kb/s)"
        "bitrate_average_damping[set the reaction time for the average bitrate tracker]\:time (seconds)"
        "disable_coupling[disable use of channel coupling for multichannel encoding]"' \
      '(-q --quality)'{-q+,--quality=}'[set encoding quality]:quality:(0 1 2 3 4 5 6 7 8 9 10)' \
      '--resample=[resample input to the given sample rate before encoding]:sample rate (Hz)' \
      '--downmix[down mix input from stereo to mono]' \
      '--scale=[set input scaling factor]:scaling factor' \
      '(-s --serial)'{-s+,--serial=}'[force a specific serial number in the output stream]:serial number' \
      "--discard-comments[don't copy comments from FLAC file to output Ogg Vorbis file]" \
      '--ignorelength[ignore the datalength in Wave headers]' \
      '(-o --output)'{-o+,--output=}'[write the Ogg Vorbis stream to output_file]:files:->oggfiles' \
      '(-n --names)'{-n+,--names=}'[specify pattern for producing filenames]:string' \
      '(-X --name-remove)'{-X+,--name-remove=}'[remove specified characters from output filenames]:characters' \
      '(-P --name-replace)'{-P+,--name-replace=}'[specify replacement characters for those removed]:characters' \
      '--utf8[interpret command-line parameters as already being UTF-8 encoded]' \
      \*{-c+,--comment=}'[add the string comment as an extra comment]:comment' \
      \*{-d+,--date=}'[set the date comment field to the given value]:date' \
      \*{-N+,--tracknum=}'[set the track number comment field to the given value]:track number' \
      \*{-t+,--title=}'[set the track title comment field to title]:title' \
      \*{-l+,--album=}'[set the album comment field to album]:album' \
      \*{-a+,--artist=}'[set the artist comment field in the comments to artist]:artist' \
      \*{-G+,--genre=}'[set the genre comment field in the comments to genre]:genre' \
      \*{-L+,--lyrics=}'[include lyrics from specified file]:lyrics file:_files -g "*.(srt|lrc)(-.)"' \
      \*{-Y+,--lyrics-language=}'[specify language for the lyrics]:language' \
      '*:input file:_files -g "(#i)*.(flac|wav|aiff)(-.)"' && ret=0
  ;;
  ogg123)
    _arguments -C -s -S \
      \*{-d+,--device=}'[output device]:device:(aixs alsa arts au esd irix macosx nas null oss pulse raw roar sndio sun wav wmm)' \
      \*{-f+,--files=}'[output filename for a previously specified file device]:output filename:_files -g "(#i)*.(wav|au|raw)(-.)"' \
      '--audio-buffer=[specify size of output audio buffer]:size (kilobytes)' \
      \*{-o,--device-option=}'[assign device option values]:device option:->devopts' \
      '(-@ --list)'{-@+,--list=}'[play all of the files from a playlist]:playlist:_files' \
      '(-r --repeat)'{-r,--repeat}'[repeat playlist indefinitely]' \
      '(-R --remote)'{-R,--remote}'[use remote control interface]' \
      '(-z --shuffle -Z --random)'{-z,--shuffle}'[shuffle list of files before playing]' \
      '(-Z --random -z --shuffle -r --repeat)'{-Z,--random}'[play files randomly until interrupted]' \
      '(-b --buffer)'{-b+,--buffer=}'[specify size of input buffer (HTTP only)]:size (kilobytes)' \
      '(-p --prebuffer)'{-p+,--prebuffer=}'[delay playback until proportion of buffer filled (HTTP only)]:percent' \
      '(-k --skip)'{-k+,--skip=}"[skip up to specified time]:start time ([[hh\:]mm\:]ss[.d])" \
      '(-K --end)'{-K+,--end=}"[end after specified time]:end time ([[hh\:]mm\:]ss[.d])" \
      '(-x --nth)'{-x+,--nth=}"[play every 'n'th block]:number"\
      '(-y --ntimes)'{-y+,--ntimes=}"[repeat every 'n'th block]:number" \
      '(-l --delay)'{-l+,--delay=}'[set delay between two SIGINTs to quit]:delay (ms)' \
      '(- *)'{-h,--help}'[display usage information]' \
      '(-q --quiet -v --verbose)'{--quiet,-q}'[quiet mode]' \
      '(-q --quiet)*'{-v,--verbose}'[increase verbosity]' \
      '(- *)'{-V,--version}'[display version information]' \
      \*{-c-,--config=-}'[specify config options]: :_values option
        "default_device\:device"
        "shuffle\:value\:(0 1)"
        "repeat\:value\:(0 1)"' \
      '*:sound file or directory:->urls-or-files' && ret=0
  ;;
  ogginfo)
    _arguments -S \
      '(- *)-h[display usage information]' \
      '(- *)-V[display version information]' \
      '(-)*-q[quiet mode]' \
      '(-)-v[verbose mode]' \
      '(-h)*:ogg vorbis file:_files -g "(#i)*.ogg(-.)"' && ret=0
  ;;
  oggdec)
    _arguments -s -S \
      '(-Q --quiet)'{-Q,--quiet}'[quiet mode]' \
      '(- *)'{-h,--help}'[display usage information]' \
      '(- *)'{-V,--version}'[display version information]' \
      '(-b --bits)'{-b+,--bits=}'[bits per sample]:bits per sample:(8 16)' \
      '(-e --endianness)'{-e+,--endianness=}'[set endianness for 16-bit output]:endianness [0]:((0\:little-endian\ \(Intel\ byte\ order\) 1\:big-endian\ \(sane\ byte\ order\)))' \
      '(-s --sign)'{-s+,--sign=}'[set signedness for output]:signedness [1]:((0\:unsigned 1\:signed))' \
      '(-R --raw)'{-R,--raw}'[output in raw format]' \
      '(-o --output)'{-o+,--output=}'[write output to specified filename]:output filename:_files' \
      '*:ogg vorbis file:_files -g "(#i)*.ogg(-.)"' && ret=0
  ;;
  vorbiscomment)
    _arguments -s -S \
      '(-l --list)*'{-t+,--tag=}'[specify a comment tag on the commandline]:tag=value' \
      '(-c --commentfile)'{-c+,--commentfile=}'[specify comment file]:file:_files' \
      '(-R --raw)'{-R,--raw}'[read and write comments in UTF-8]' \
      '(-e --escapes)'{-e,--escapes}'[use \\n-style escapes to allow multiline comments]' \
      '1:ogg vorbis file:_files -g "(#i)*.ogg(-.)"' \
      '(-l --list)2:ogg vorbis file:_files -g "(#i)*.ogg(-.)"' \
      + '(actions)' \
      '(2 -t --tag)'{-l,--list}'[list the comments (default)]' \
      {-a,--append}'[append comments]' \
      {-w,--write}'[write comments, replacing the existing ones]' \
      '(-)'{-h,--help}'[display usage information]' \
      '(-)'{-V,--version}'[display version information]' && ret=0
  ;;
esac

if [[ -n $state ]]; then
  case $state in
    urls-or-files)
      if [[ -prefix 1 (f|ht)tp(|s):// ]]; then
        alts=( 'urls:URL of sound file:_urls -f -g "*.(#i)(ogg|flax|spx)(-.)"' )
      else
        alts=( 'urls:URL of sound file:compadd -S "" ftp:// http:// https://' )
      fi
      _alternative \
        'files:sound file or directory:_files -g "(#i)*.(ogg|flac|spx)"' \
        $alts && ret=0
    ;;
    devopts)
      if compset -P 1 '*:'; then
        _message -e value value
      else
        _description device-options expl 'device option'
        if ! compset -S ':*'; then
          compadd "$expl[@]" - debug verbose quiet && ret=0
          suf=( -qS : )
        fi
        compadd $suf "$expl[@]" - matrix dev buffer_time period_time use_mmap \
            multi host buf_size dsp server sink byteorder id && ret=0
      fi
    ;;
  esac
fi

return ret