{
  "description": "Install packages or list them with opam. Switches, pinning, repositories and removal are left out.",
  "name": "opam",
  "subcommands": [
    {
      "name": "install",
      "description": "Install packages",
      "options": [
        {
          "names": [
            "--deps-only"
          ],
          "description": "Dependencies only"
        },
        {
          "names": [
            "--dry-run"
          ],
          "description": "Dry run"
        },
        {
          "names": [
            "--show-actions"
          ],
          "description": "Show actions only"
        },
        {
          "names": [
            "--with-test",
            "-t"
          ],
          "description": "Run tests"
        },
        {
          "names": [
            "--with-doc",
            "-d"
          ],
          "description": "Build documentation"
        },
        {
          "names": [
            "--jobs",
            "-j"
          ],
          "description": "Parallel jobs",
          "args": {
            "name": "jobs",
            "isOptional": false
          }
        },
        {
          "names": [
            "--keep-build-dir",
            "-b"
          ],
          "description": "Keep build directories"
        },
        {
          "names": [
            "--update-invariant"
          ],
          "description": "Use with caution: lets the solver change the packages set as the switch base."
        },
        {
          "names": [
            "--switch"
          ],
          "description": "Switch",
          "args": {
            "name": "switch",
            "isOptional": false
          }
        },
        {
          "names": [
            "--yes",
            "-y"
          ],
          "description": "Answer yes to prompts"
        },
        {
          "names": [
            "--verbose"
          ],
          "description": "Verbose"
        }
      ],
      "args": [
        {
          "name": "packages",
          "description": "Package names, optionally with a version or constraint (pkg, pkg.1.0, pkg>=0.5) or a path to a project directory.",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "list",
      "description": "List packages",
      "options": [
        {
          "names": [
            "--available",
            "-a"
          ],
          "description": "Available only"
        },
        {
          "names": [
            "--all",
            "-A"
          ],
          "description": "Include uninstalled and unavailable"
        },
        {
          "names": [
            "--installed",
            "-i"
          ],
          "description": "Installed only"
        },
        {
          "names": [
            "--roots",
            "--installed-roots"
          ],
          "description": "Explicitly installed only"
        },
        {
          "names": [
            "--pinned"
          ],
          "description": "Pinned only"
        },
        {
          "names": [
            "--latests-only"
          ],
          "description": "Latest version only"
        },
        {
          "names": [
            "--depends-on"
          ],
          "description": "Comma-separated packages.",
          "args": {
            "name": "depends_on",
            "description": "Comma-separated packages.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--required-by"
          ],
          "description": "Comma-separated packages.",
          "args": {
            "name": "required_by",
            "description": "Comma-separated packages.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--recursive"
          ],
          "description": "Transitive dependencies"
        },
        {
          "names": [
            "--search"
          ],
          "description": "Search descriptions"
        },
        {
          "names": [
            "--short",
            "-s"
          ],
          "description": "Names only, no header"
        },
        {
          "names": [
            "--no-switch"
          ],
          "description": "Ignore the current switch"
        }
      ],
      "args": [
        {
          "name": "patterns",
          "description": "Package patterns with globs; matched against NAME or NAME.VERSION.",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    }
  ]
}
