#compdef cabal

local -a subcmds

subcmds=(${${${${${(f)"$(cabal --help)"}[(r)Commands:*,(r)For more information*]}[2,-2]}#  }%% *})

_arguments \
    '1:subcmd:compadd -a subcmds' \
    ':other: _alternative "options:option:compadd -- $(cabal $words[2] --list-options)" "files:file:_files"'
