{
  "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
    },
    "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\n    Do not download, build, or install anything, only print what would happen.\n.. option:: --only-configure\n    Instead of performing a full build just run the configure step.\n    Only accepted by the ``build`` command.\n.. option:: --only-dependencies\n            --dependencies-only\n    Install only the dependencies necessary to build the given packages.\n    Not accepted by the ``repl`` command."
      }
    ],
    "subcommand": [
      {
        "path": [
          "build"
        ],
        "label": "Build targets",
        "description": "Build targets and their dependencies.",
        "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\n    Do not download, build, or install anything, only print what would happen.\n.. option:: --only-configure\n    Instead of performing a full build just run the configure step.\n    Only accepted by the ``build`` command.\n.. option:: --only-dependencies\n            --dependencies-only\n    Install only the dependencies necessary to build the given packages.\n    Not accepted by the ``repl`` command."
          }
        ],
        "field": [
          {
            "id": "dry_run",
            "label": "Dry run",
            "type": "boolean",
            "option": [
              "--dry-run"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "only_dependencies",
            "label": "Dependencies only",
            "type": "boolean",
            "option": [
              "--only-dependencies"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "only_configure",
            "label": "Configure only",
            "type": "boolean",
            "option": [
              "--only-configure"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "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"
            ]
          }
        ],
        "task": [
          {
            "id": "build",
            "label": "Build",
            "fields": [
              "targets"
            ],
            "required": []
          },
          {
            "id": "deps",
            "label": "Build dependencies only",
            "fields": [
              "targets",
              "only_dependencies"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "targets",
              "dry_run",
              "only_dependencies",
              "only_configure"
            ]
          }
        ]
      },
      {
        "path": [
          "run"
        ],
        "label": "Run an executable",
        "description": "Run an executable, test or benchmark target.",
        "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\n    Do not download, build, or install anything, only print what would happen.\n.. option:: --only-configure\n    Instead of performing a full build just run the configure step.\n    Only accepted by the ``build`` command.\n.. option:: --only-dependencies\n            --dependencies-only\n    Install only the dependencies necessary to build the given packages.\n    Not accepted by the ``repl`` command."
          }
        ],
        "field": [
          {
            "id": "dry_run",
            "label": "Dry run",
            "type": "boolean",
            "option": [
              "--dry-run"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "target",
            "label": "Target",
            "description": "Component, package or script path; may be empty if it identifies one executable.",
            "type": "string",
            "position": 0,
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "run",
            "label": "Run",
            "fields": [
              "target"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "target",
              "dry_run"
            ]
          }
        ]
      },
      {
        "path": [
          "test"
        ],
        "label": "Run tests",
        "description": "Build and run test suites.",
        "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\n    Do not download, build, or install anything, only print what would happen.\n.. option:: --only-configure\n    Instead of performing a full build just run the configure step.\n    Only accepted by the ``build`` command.\n.. option:: --only-dependencies\n            --dependencies-only\n    Install only the dependencies necessary to build the given packages.\n    Not accepted by the ``repl`` command."
          }
        ],
        "field": [
          {
            "id": "dry_run",
            "label": "Dry run",
            "type": "boolean",
            "option": [
              "--dry-run"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "targets",
            "label": "Targets",
            "description": "Test suite or package targets; empty tests the current package.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "test",
            "label": "Test",
            "fields": [
              "targets"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "targets",
              "dry_run"
            ]
          }
        ]
      },
      {
        "path": [
          "update"
        ],
        "label": "Update package index",
        "description": "Update the package index from remote repositories.",
        "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\n    Do not download, build, or install anything, only print what would happen.\n.. option:: --only-configure\n    Instead of performing a full build just run the configure step.\n    Only accepted by the ``build`` command.\n.. option:: --only-dependencies\n            --dependencies-only\n    Install only the dependencies necessary to build the given packages.\n    Not accepted by the ``repl`` command."
          }
        ],
        "field": [
          {
            "id": "repos",
            "label": "Repositories",
            "description": "REPO or REPO,INDEX-STATE; empty updates all.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "update",
            "label": "Update",
            "fields": [
              "repos"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "repos"
            ]
          }
        ]
      }
    ]
  }
}
