{
  "name": "stack",
  "description": "The Haskell Tool Stack",
  "options": [
    {
      "names": [
        "--help",
        "-h"
      ],
      "description": "Show help for stack"
    },
    {
      "names": [
        "--version"
      ],
      "description": "Show version for stack"
    },
    {
      "names": [
        "--numeric-version"
      ],
      "description": "Show only the numeric version for stack"
    },
    {
      "names": [
        "--hpack-numeric-version"
      ],
      "description": "Show only hpack's version number"
    },
    {
      "names": [
        "--verbosity"
      ],
      "description": "Verbosity: silent, error, warn, info, debug"
    },
    {
      "names": [
        "--verbose",
        "-v"
      ],
      "description": "Enable verbose mode: verbosity level \"debug\""
    },
    {
      "names": [
        "--silent"
      ],
      "description": "Enable silent mode: verbosity level \"silent\""
    },
    {
      "names": [
        "--stack-root"
      ],
      "description": "Absolute path to the global stack root directory (Overrides any STACK_ROOT environment variable)"
    },
    {
      "names": [
        "--work-dir"
      ],
      "description": "Relative path of work directory (Overrides any STACK_WORK environment variable, default is '.stack-work')"
    },
    {
      "names": [
        "--system-ghc"
      ],
      "description": "Enable using the system installed GHC (on the PATH) if it is available and its version matches. Disabled by default"
    },
    {
      "names": [
        "--no-system-ghc"
      ],
      "description": "Disable using the system installed GHC (on the PATH) if it is available and its version matches. Disabled by default",
      "exclusiveOn": [
        "--system-ghc"
      ]
    },
    {
      "names": [
        "--install-ghc"
      ],
      "description": "Enable downloading and installing GHC if necessary (can be done manually with stack setup). Enabled by default)"
    },
    {
      "names": [
        "--no-install-ghc"
      ],
      "description": "Disable downloading and installing GHC if necessary (can be done manually with stack setup). Enabled by default",
      "exclusiveOn": [
        "--install-ghc"
      ]
    },
    {
      "names": [
        "--ghc-variant"
      ],
      "description": "Specialized GHC variant, e.g. integersimple (incompatible with --system-ghc)"
    },
    {
      "names": [
        "--ghc-build"
      ],
      "description": "Specialized GHC build, e.g. 'gmp4' or 'standard' (usually auto-detected)"
    },
    {
      "names": [
        "--jobs",
        "-j"
      ],
      "description": "Number of concurrent jobs to run. Should be provied as ARGS"
    },
    {
      "names": [
        "--extra-include-dirs"
      ],
      "description": "Extra directories to check for C header files"
    },
    {
      "names": [
        "--extra-lib-dir"
      ],
      "description": "Extra directories to check for libraries"
    },
    {
      "names": [
        "--custom-preprocessor-extensions"
      ],
      "description": "Extensions used for custom preprocessors"
    },
    {
      "names": [
        "--color",
        "--colour"
      ],
      "description": "Specify when to use color in output",
      "args": [
        {
          "name": "WHEN",
          "description": "WHEN is 'always', 'never', or 'auto'. On Windows versions before Windows 10, for terminals that do not support color codes, the default is 'never'; color may work on terminals that support color codes",
          "suggestions": [
            "always",
            "never",
            "auto"
          ]
        }
      ]
    },
    {
      "names": [
        "--compiler"
      ],
      "description": "Use the specified compiler",
      "args": [
        {
          "name": "COMPILER"
        }
      ]
    },
    {
      "names": [
        "--terminal"
      ],
      "description": "Enable overriding terminal detection in the case of running in a false terminal"
    },
    {
      "names": [
        "--no-terminal"
      ],
      "description": "Disable overriding terminal detection in the case of running in a false terminal",
      "exclusiveOn": [
        "--teminal"
      ]
    },
    {
      "names": [
        "--stack-colors",
        "--stack-colours"
      ],
      "description": "Specify stack's output styles",
      "args": [
        {
          "name": "STYLE",
          "description": "It a colon-delimited sequence of key=value, where 'key' is a style name and 'value' is a semicolon-delimited list of 'ANSI' SGR (Select Graphic Rendition) control codes (in decimal). Use 'stack ls stack-colors --basic' to see the current sequence. In shells where a semicolon is a command separator, enclose STYLES in quotes"
        }
      ]
    },
    {
      "names": [
        "--terminal-width"
      ],
      "description": "Specify the width of the terminal, used for pretty-print messages",
      "args": [
        {
          "name": "INT"
        }
      ]
    },
    {
      "names": [
        "--stack-yaml"
      ],
      "description": "Override project stack.yaml file (overrides any STACK_YAML environment variable)",
      "args": [
        {
          "name": "STACK-YAML"
        }
      ]
    },
    {
      "names": [
        "--lock-file"
      ],
      "description": "Specify how to interact with lock files",
      "args": [
        {
          "name": "ARG",
          "description": "Default: read/write. If resolver is overridden: read-only"
        }
      ]
    }
  ],
  "subcommands": [
    {
      "name": "build",
      "description": "Build the package(s) in the current directory/configuration",
      "options": [
        {
          "names": [
            "--resolver"
          ],
          "description": "Override resolver in project file",
          "args": [
            {
              "name": "RESOLVER"
            }
          ]
        },
        {
          "names": [
            "--bench"
          ],
          "description": "Override resolver in project file"
        },
        {
          "names": [
            "--test"
          ],
          "description": "Run complete test suite"
        },
        {
          "names": [
            "--copy-bins"
          ],
          "description": "Enable copying any generated executables to the local bin path (default: disabled)"
        },
        {
          "names": [
            "--no-copy-bins"
          ],
          "description": "Disable copying any generated executables to the local bin path (default: disabled)",
          "exclusiveOn": [
            "--no-copy-bins"
          ]
        },
        {
          "names": [
            "--haddock"
          ],
          "description": "Enable generating Haddocks the package(s) in this directory/configuration (default: disabled)"
        },
        {
          "names": [
            "--no-haddock"
          ],
          "description": "Disable generating Haddocks the package(s) in this directory/configuration (default: disabled)",
          "exclusiveOn": [
            "--no-haddock"
          ]
        },
        {
          "names": [
            "--open"
          ],
          "description": "Enable opening the local Haddock"
        },
        {
          "names": [
            "--no-open"
          ],
          "description": "Disable opening the local Haddock"
        },
        {
          "names": [
            "--haddock-deps"
          ],
          "description": "Enable building Haddocks for dependencies (default: true if building Haddocks, false otherwise)"
        },
        {
          "names": [
            "--no-haddock-deps"
          ],
          "description": "Disable building Haddocks for dependencies (default: true if building Haddocks, false otherwise)",
          "exclusiveOn": [
            "--haddock-deps"
          ]
        },
        {
          "names": [
            "--pedantic"
          ],
          "description": "Turn on all warnings(-Wall) and errors(-Werror)"
        },
        {
          "names": [
            "--only-locals"
          ],
          "description": "Only build packages in the local database, fail if the build plan includes the snapshot database"
        },
        {
          "names": [
            "--file-watch"
          ],
          "description": "Watch for changes in the files used to build the project, and kick off a new build when new changes are saved"
        },
        {
          "names": [
            "--watch-all"
          ],
          "description": "Watch all local files not taking targets into account"
        },
        {
          "names": [
            "-file-watch-poll"
          ],
          "description": "Like --file-watch, but polling the filesystem instead of using events"
        },
        {
          "names": [
            "--only-snapshot"
          ],
          "description": "Only build packages for the snapshot database, not the local database"
        },
        {
          "names": [
            "--only-configure"
          ],
          "description": "Only perform the configure step, not any builds. Intended for tool usage, may break when used on multiple packages at once!"
        },
        {
          "names": [
            "--trace"
          ],
          "description": "Enable profiling in libraries, executables, etc. for all expressions and generate a backtrace on exception"
        },
        {
          "names": [
            "--profile"
          ],
          "description": "Runs profiling in libraries, executables, etc. for all expressions and generate a profiling report in tests or benchmarks"
        },
        {
          "names": [
            "--no-strip"
          ],
          "description": "Disable DWARF debugging symbol stripping in libraries, executables, etc. for all expressions, producing larger executables but allowing the use of standard debuggers/profiling tools/other utilities that use debugging symbols"
        },
        {
          "names": [
            "--library-profiling"
          ],
          "description": "Enable library profiling for TARGETs and all its dependencies (default: disabled)"
        },
        {
          "names": [
            "--no-library-profiling"
          ],
          "description": "Disable library profiling for TARGETs and all its dependencies (default: disabled)"
        },
        {
          "names": [
            "--executable-profiling"
          ],
          "description": "Enable executable profiling for TARGETs and all its dependencies (default: disabled)"
        },
        {
          "names": [
            "--no-executable-profiling"
          ],
          "description": "Disable executable profiling for TARGETs and all its dependencies (default: disabled)",
          "exclusiveOn": [
            "--executable-profiling"
          ]
        },
        {
          "names": [
            "--library-stripping"
          ],
          "description": "Enable library stripping for TARGETs and all its dependencies (default: enabled"
        },
        {
          "names": [
            "--no-library-stripping"
          ],
          "description": "Disable library stripping for TARGETs and all its dependencies (default: enabled",
          "exclusiveOn": [
            "--library-stripping"
          ]
        },
        {
          "names": [
            "--executable-stripping"
          ],
          "description": "Enable executable stripping for TARGETs and all its dependencies (default: enabled)"
        },
        {
          "names": [
            "--no-executable-stripping"
          ],
          "description": "Disable executable stripping for TARGETs and all its dependencies (default: enabled)",
          "exclusiveOn": [
            "--executable-stripping"
          ]
        },
        {
          "names": [
            "--ghc-options"
          ],
          "description": "Specify additional options passed to GHC for all local targets. Does not affect extra-dep and snapshot packages at all",
          "args": [
            {}
          ]
        }
      ],
      "args": [
        {
          "name": "targets",
          "description": "Packages or targets to build; empty builds the project.",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "install",
      "description": "Builds the package in current directory and copies it as an executable for system wide usage. Shortcut for 'build --copy-bins"
    },
    {
      "name": "test",
      "description": "Shortcut for 'build --test'"
    },
    {
      "name": "bench",
      "description": "Shortcut for 'build --bench'"
    },
    {
      "name": "haddock",
      "description": "Shortcut for 'build --haddock'"
    },
    {
      "name": "new",
      "description": "Create a new project from a template. Run `stack templates' to see available templates. Note: you can also specify a local file or a remote URL as a template"
    },
    {
      "name": "templates",
      "description": "Show how to find templates available for `stack new'. `stack new' can accept a template from a remote repository (default: github), local file or remote URL. Note: this downloads the help file"
    },
    {
      "name": "init",
      "description": "Create stack project config from cabal or hpack package specifications'"
    },
    {
      "name": "setup",
      "description": "Get the appropriate GHC for your project"
    },
    {
      "name": "path",
      "description": "Print out handy path information"
    },
    {
      "name": "ls",
      "description": "List command. Supports snapshots, dependencies and stack's styles"
    },
    {
      "name": "unpack",
      "description": "Unpack one or more packages locally"
    },
    {
      "name": "update",
      "description": "Update the package index"
    },
    {
      "name": "upgrade",
      "description": "Upgrade to the latest stack version"
    },
    {
      "name": "upload",
      "description": "Upload a package to Hackage"
    },
    {
      "name": "sdist",
      "description": "Create source distribution tarballs"
    },
    {
      "name": "dot",
      "description": "Visualize your project's dependency graph using Graphviz dot"
    },
    {
      "name": "hoogle",
      "description": "Run hoogle, the Haskell API search engine. Use the '-- ARGUMENT(S)' syntax to pass Hoogle arguments, e.g. stack hoogle -- --count=20, or stack hoogle --server --local"
    },
    {
      "name": "exec",
      "description": "Execute a command. If the command is absent, the first of any arguments is taken as the command",
      "options": [
        {
          "names": [
            "--snapshot-location-base"
          ],
          "description": "The base location of LTS/Nightly snapshots",
          "args": [
            {
              "name": "URL"
            }
          ]
        },
        {
          "names": [
            "--cwd"
          ],
          "description": "Sets the working directory before executing the command",
          "args": [
            {
              "name": "DIR"
            }
          ]
        },
        {
          "names": [
            "--setup-info-yaml"
          ],
          "description": "Alternate URL or relative / absolute path for stack dependencies",
          "args": [
            {
              "name": "URL"
            }
          ]
        },
        {
          "names": [
            "--ghc-package-path"
          ],
          "description": "Enable setting the GHC_PACKAGE_PATH variable for the subprocess (default: enabled)"
        },
        {
          "names": [
            "--no-ghc-package-path"
          ],
          "description": "Disable setting the GHC_PACKAGE_PATH variable for the subprocess (default: enabled)"
        },
        {
          "names": [
            "--package"
          ],
          "description": "Additional package(s) that must be installed",
          "args": [
            {
              "name": "PACKAGE(S)"
            }
          ]
        },
        {
          "names": [
            "--stack-exe"
          ],
          "description": "Enable setting the STACK_EXE environment variable to the path for the stack executable (default: enabled)"
        },
        {
          "names": [
            "--no-stack-exe"
          ],
          "description": "Disable setting the STACK_EXE environment variable to the path for the stack executable (default: enabled)"
        }
      ]
    },
    {
      "name": "run",
      "description": "Build and run an executable. Defaults to the first available executable if none is provided as the first argument"
    },
    {
      "name": "repl",
      "description": "Load a REPL"
    }
  ]
}
