{
  "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
    },
    "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]\n-1  Encode the whole CD in a single file.\n-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.\n-c [filename]  Specifies an additional configuration file to parse.\n-d [devicename | filename]  CD-ROM block device that contains audio tracks to be read.\n-j [number]  Start [number] encoder processes at once.\n-k  Keep the wav files after encoding.\n-n  Do not query CDDB database. Create and use a template.\n-N  Non interactive mode. Do not ask anything from the user. Just go ahead.\n-o [filetype][:filetypeoptions]  Select output type. Can be \"vorbis\" (or \"ogg\"), \"mp3\", \"flac\", \"spx\", \"mpc\", \"m4a\", \"wav\", \"wv\", \"ape\", \"opus\", \"mka\" or \"aiff\".\n-p  Pads track numbers with 0's.\n-V  Be more verbose. Add this more than once to make things even more verbose.\n-x  Eject the CD when all tracks have been read.\n"
      }
    ],
    "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"
        ]
      },
      {
        "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"
        ]
      },
      {
        "id": "device",
        "label": "CD device",
        "type": "path",
        "option": [
          "-d"
        ],
        "path": {
          "kind": "any",
          "role": "input"
        },
        "sources": [
          "man"
        ]
      },
      {
        "id": "actions",
        "label": "Actions",
        "description": "Comma-separated list, for example cddb,read,encode.",
        "type": "string",
        "option": [
          "-a"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "jobs",
        "label": "Parallel encoders",
        "type": "integer",
        "option": [
          "-j"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "config_file",
        "label": "Extra config file",
        "type": "path",
        "option": [
          "-c"
        ],
        "path": {
          "kind": "file",
          "role": "input"
        },
        "sources": [
          "man"
        ]
      },
      {
        "id": "single_file",
        "label": "Encode whole CD as one file",
        "type": "boolean",
        "option": [
          "-1"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "keep_wav",
        "label": "Keep WAV files",
        "type": "boolean",
        "option": [
          "-k"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "pad_tracks",
        "label": "Pad track numbers with zeros",
        "type": "boolean",
        "option": [
          "-p"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "no_cddb",
        "label": "Skip CDDB lookup (use template)",
        "type": "boolean",
        "option": [
          "-n"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "non_interactive",
        "label": "Non-interactive",
        "type": "boolean",
        "option": [
          "-N"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "eject",
        "label": "Eject when done reading",
        "type": "boolean",
        "option": [
          "-x"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "verbose",
        "label": "Verbosity",
        "type": "count",
        "option": [
          "-V"
        ],
        "sources": [
          "man"
        ]
      }
    ],
    "task": [
      {
        "id": "rip_flac",
        "label": "Rip to FLAC",
        "fields": [
          "output_type",
          "device",
          "non_interactive",
          "eject"
        ],
        "required": [
          "output_type"
        ],
        "set": {
          "output_type": [
            "flac"
          ]
        }
      },
      {
        "id": "rip_mp3",
        "label": "Rip to MP3",
        "fields": [
          "output_type",
          "device",
          "jobs",
          "pad_tracks"
        ],
        "required": [
          "output_type"
        ],
        "set": {
          "output_type": [
            "mp3"
          ]
        }
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "output_type",
          "device",
          "tracks",
          "actions",
          "jobs",
          "non_interactive",
          "eject"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "config_file",
          "single_file",
          "keep_wav",
          "pad_tracks",
          "no_cddb",
          "verbose"
        ]
      }
    ]
  }
}
