id = "abcde" name = "abcde" homepage = "https://abcde.einval.com" description = "A Better CD Encoder" executables = ["abcde"] [dotfiles] # https://abcde.einval.com/ and the upstream example configuration # (https://github.com/johnlane/abcde/blob/master/abcde.conf) document the # per-user configuration file as $HOME/.abcde.conf; -c only overrides it. paths = ["~/.abcde.conf"] secret = [] [commands] format = 1 label = "Rip and encode a CD" description = "Grab the tracks of an audio CD and encode them. Covers the output type, device, actions, parallel jobs and the common switches; encoder-specific options, album art and remote encoding are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true } [[commands.source]] id = "man" kind = "manual" url = "https://manpages.debian.org/testing/abcde/abcde.1.en.html" revision = "2.9.3-1" evidence = """ abcde [options] [tracks] -1 Encode the whole CD in a single file. -a [actions] Comma-delimited list of actions to perform. Can be one or more of: cddb, cue, read, getalbumart, embedalbumart, normalize, encode, tag, move, replaygain, playlist, clean. -c [filename] Specifies an additional configuration file to parse. -d [devicename | filename] CD-ROM block device that contains audio tracks to be read. -j [number] Start [number] encoder processes at once. -k Keep the wav files after encoding. -n Do not query CDDB database. Create and use a template. -N Non interactive mode. Do not ask anything from the user. Just go ahead. -o [filetype][:filetypeoptions] Select output type. Can be "vorbis" (or "ogg"), "mp3", "flac", "spx", "mpc", "m4a", "wav", "wv", "ape", "opus", "mka" or "aiff". -p Pads track numbers with 0's. -V Be more verbose. Add this more than once to make things even more verbose. -x Eject the CD when all tracks have been read. """ [[commands.field]] id = "tracks" label = "Tracks" description = "Track numbers or ranges such as 1-5; leave empty for the whole CD." type = "string" position = 0 multiple = true sources = ["man"] [[commands.field]] id = "output_type" label = "Output type" type = "string" option = ["-o"] suggestions = [{ value = "flac", label = "FLAC" }, { value = "mp3", label = "MP3" }, { value = "ogg", label = "Ogg Vorbis" }, { value = "opus", label = "Opus" }, { value = "m4a", label = "AAC (m4a)" }, { value = "wav", label = "WAV" }] sources = ["man"] [[commands.field]] id = "device" label = "CD device" type = "path" option = ["-d"] path = { kind = "any", role = "input" } sources = ["man"] [[commands.field]] id = "actions" label = "Actions" description = "Comma-separated list, for example cddb,read,encode." type = "string" option = ["-a"] sources = ["man"] [[commands.field]] id = "jobs" label = "Parallel encoders" type = "integer" option = ["-j"] sources = ["man"] [[commands.field]] id = "config_file" label = "Extra config file" type = "path" option = ["-c"] path = { kind = "file", role = "input" } sources = ["man"] [[commands.field]] id = "single_file" label = "Encode whole CD as one file" type = "boolean" option = ["-1"] sources = ["man"] [[commands.field]] id = "keep_wav" label = "Keep WAV files" type = "boolean" option = ["-k"] sources = ["man"] [[commands.field]] id = "pad_tracks" label = "Pad track numbers with zeros" type = "boolean" option = ["-p"] sources = ["man"] [[commands.field]] id = "no_cddb" label = "Skip CDDB lookup (use template)" type = "boolean" option = ["-n"] sources = ["man"] [[commands.field]] id = "non_interactive" label = "Non-interactive" type = "boolean" option = ["-N"] sources = ["man"] [[commands.field]] id = "eject" label = "Eject when done reading" type = "boolean" option = ["-x"] sources = ["man"] [[commands.field]] id = "verbose" label = "Verbosity" type = "count" option = ["-V"] sources = ["man"] [[commands.task]] id = "rip_flac" label = "Rip to FLAC" fields = ["output_type", "device", "non_interactive", "eject"] required = ["output_type"] set = { output_type = ["flac"] } [[commands.task]] id = "rip_mp3" label = "Rip to MP3" fields = ["output_type", "device", "jobs", "pad_tracks"] required = ["output_type"] set = { output_type = ["mp3"] } [[commands.group]] id = "basic" label = "Basic" fields = ["output_type", "device", "tracks", "actions", "jobs", "non_interactive", "eject"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["config_file", "single_file", "keep_wav", "pad_tracks", "no_cddb", "verbose"]