id = "abcde"
name = "abcde"
homepage = "https://abcde.einval.com"
description = "A Better CD Encoder"
executables = ["abcde"]
[dotfiles]
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"]