id = "cabal-install"
name = "cabal-install"
homepage = "https://github.com/haskell/cabal"
description = "The command-line tool for the Cabal build system."
executables = ["cabal"]
[dotfiles]
paths = ["[configHome]/cabal/config"]
exclude = ["~/.cabal/packages/"]
secret = []
side_effect = false
[commands]
format = 1
label = "Cabal"
description = "Common cabal-install jobs: build, run, test and update the package index. Configuration flags, constraints and project-file options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.source]]
id = "docs"
kind = "manual"
url = "https://raw.githubusercontent.com/haskell/cabal/HEAD/doc/cabal-commands.rst"
revision = "HEAD 2026-10-27"
evidence = """.. option:: --dry-run
Do not download, build, or install anything, only print what would happen.
.. option:: --only-configure
Instead of performing a full build just run the configure step.
Only accepted by the ``build`` command.
.. option:: --only-dependencies
--dependencies-only
Install only the dependencies necessary to build the given packages.
Not accepted by the ``repl`` command."""
[[commands.subcommand]]
path = ["build"]
label = "Build targets"
description = "Build targets and their dependencies."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://raw.githubusercontent.com/haskell/cabal/HEAD/doc/cabal-commands.rst"
revision = "HEAD 2026-10-27"
evidence = """.. option:: --dry-run
Do not download, build, or install anything, only print what would happen.
.. option:: --only-configure
Instead of performing a full build just run the configure step.
Only accepted by the ``build`` command.
.. option:: --only-dependencies
--dependencies-only
Install only the dependencies necessary to build the given packages.
Not accepted by the ``repl`` command."""
[[commands.subcommand.field]]
id = "dry_run"
label = "Dry run"
type = "boolean"
option = ["--dry-run"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "only_dependencies"
label = "Dependencies only"
type = "boolean"
option = ["--only-dependencies"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "only_configure"
label = "Configure only"
type = "boolean"
option = ["--only-configure"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "targets"
label = "Targets"
description = "Package, component, module or file targets; empty builds the package in the current directory."
type = "string"
position = 0
multiple = true
sources = ["docs"]
[[commands.subcommand.task]]
id = "build"
label = "Build"
fields = ["targets"]
required = []
[[commands.subcommand.task]]
id = "deps"
label = "Build dependencies only"
fields = ["targets", "only_dependencies"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["targets", "dry_run", "only_dependencies", "only_configure"]
[[commands.subcommand]]
path = ["run"]
label = "Run an executable"
description = "Run an executable, test or benchmark target."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://raw.githubusercontent.com/haskell/cabal/HEAD/doc/cabal-commands.rst"
revision = "HEAD 2026-10-27"
evidence = """.. option:: --dry-run
Do not download, build, or install anything, only print what would happen.
.. option:: --only-configure
Instead of performing a full build just run the configure step.
Only accepted by the ``build`` command.
.. option:: --only-dependencies
--dependencies-only
Install only the dependencies necessary to build the given packages.
Not accepted by the ``repl`` command."""
[[commands.subcommand.field]]
id = "dry_run"
label = "Dry run"
type = "boolean"
option = ["--dry-run"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "target"
label = "Target"
description = "Component, package or script path; may be empty if it identifies one executable."
type = "string"
position = 0
sources = ["docs"]
[[commands.subcommand.task]]
id = "run"
label = "Run"
fields = ["target"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["target", "dry_run"]
[[commands.subcommand]]
path = ["test"]
label = "Run tests"
description = "Build and run test suites."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://raw.githubusercontent.com/haskell/cabal/HEAD/doc/cabal-commands.rst"
revision = "HEAD 2026-10-27"
evidence = """.. option:: --dry-run
Do not download, build, or install anything, only print what would happen.
.. option:: --only-configure
Instead of performing a full build just run the configure step.
Only accepted by the ``build`` command.
.. option:: --only-dependencies
--dependencies-only
Install only the dependencies necessary to build the given packages.
Not accepted by the ``repl`` command."""
[[commands.subcommand.field]]
id = "dry_run"
label = "Dry run"
type = "boolean"
option = ["--dry-run"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "targets"
label = "Targets"
description = "Test suite or package targets; empty tests the current package."
type = "string"
position = 0
multiple = true
sources = ["docs"]
[[commands.subcommand.task]]
id = "test"
label = "Test"
fields = ["targets"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["targets", "dry_run"]
[[commands.subcommand]]
path = ["update"]
label = "Update package index"
description = "Update the package index from remote repositories."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://raw.githubusercontent.com/haskell/cabal/HEAD/doc/cabal-commands.rst"
revision = "HEAD 2026-10-27"
evidence = """.. option:: --dry-run
Do not download, build, or install anything, only print what would happen.
.. option:: --only-configure
Instead of performing a full build just run the configure step.
Only accepted by the ``build`` command.
.. option:: --only-dependencies
--dependencies-only
Install only the dependencies necessary to build the given packages.
Not accepted by the ``repl`` command."""
[[commands.subcommand.field]]
id = "repos"
label = "Repositories"
description = "REPO or REPO,INDEX-STATE; empty updates all."
type = "string"
position = 0
multiple = true
sources = ["docs"]
[[commands.subcommand.task]]
id = "update"
label = "Update"
fields = ["repos"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["repos"]