{
  "description": "Common cabal-install jobs: build, run, test and update the package index. Configuration flags, constraints and project-file options are left out.",
  "name": "cabal",
  "subcommands": [
    {
      "name": "build",
      "description": "Build targets and their dependencies.",
      "options": [
        {
          "names": [
            "--dry-run"
          ],
          "description": "Dry run"
        },
        {
          "names": [
            "--only-dependencies"
          ],
          "description": "Dependencies only"
        },
        {
          "names": [
            "--only-configure"
          ],
          "description": "Configure only"
        }
      ],
      "args": [
        {
          "name": "targets",
          "description": "Package, component, module or file targets; empty builds the package in the current directory.",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "run",
      "description": "Run an executable, test or benchmark target.",
      "options": [
        {
          "names": [
            "--dry-run"
          ],
          "description": "Dry run"
        }
      ],
      "args": [
        {
          "name": "target",
          "description": "Component, package or script path; may be empty if it identifies one executable.",
          "isOptional": true
        }
      ]
    },
    {
      "name": "test",
      "description": "Build and run test suites.",
      "options": [
        {
          "names": [
            "--dry-run"
          ],
          "description": "Dry run"
        }
      ],
      "args": [
        {
          "name": "targets",
          "description": "Test suite or package targets; empty tests the current package.",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "update",
      "description": "Update the package index from remote repositories.",
      "args": [
        {
          "name": "repos",
          "description": "REPO or REPO,INDEX-STATE; empty updates all.",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    }
  ]
}
