{
  "description": "Common DUB jobs: build, run, test and create a package. Dependency management, dub.json editing and describe/generate commands are not covered.",
  "name": "dub",
  "subcommands": [
    {
      "name": "build",
      "description": "Build a package",
      "options": [
        {
          "names": [
            "--build",
            "-b"
          ],
          "description": "One of the built-in build types or a custom type.",
          "args": {
            "name": "build",
            "description": "One of the built-in build types or a custom type.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Configuration",
          "args": {
            "name": "config",
            "isOptional": false
          }
        },
        {
          "names": [
            "--compiler"
          ],
          "description": "dmd, gdc, ldc, gdmd, ldmd or a path to a compiler binary.",
          "args": {
            "name": "compiler",
            "description": "dmd, gdc, ldc, gdmd, ldmd or a path to a compiler binary.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--arch",
            "-a"
          ],
          "description": "For example x86 or x86_64.",
          "args": {
            "name": "arch",
            "description": "For example x86 or x86_64.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--force",
            "-f"
          ],
          "description": "Force recompilation"
        },
        {
          "names": [
            "--combined"
          ],
          "description": "Build in a single compiler run"
        },
        {
          "names": [
            "--parallel"
          ],
          "description": "Parallel compiler instances"
        },
        {
          "names": [
            "--nodeps"
          ],
          "description": "Skip dependency resolution"
        }
      ],
      "args": [
        {
          "name": "package",
          "description": "Package name, optionally name@version. Defaults to the package in the current directory.",
          "isOptional": true
        }
      ]
    },
    {
      "name": "run",
      "description": "Build and run a package",
      "options": [
        {
          "names": [
            "--build",
            "-b"
          ],
          "description": "One of the built-in build types or a custom type.",
          "args": {
            "name": "build",
            "description": "One of the built-in build types or a custom type.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Configuration",
          "args": {
            "name": "config",
            "isOptional": false
          }
        },
        {
          "names": [
            "--compiler"
          ],
          "description": "dmd, gdc, ldc, gdmd, ldmd or a path to a compiler binary.",
          "args": {
            "name": "compiler",
            "description": "dmd, gdc, ldc, gdmd, ldmd or a path to a compiler binary.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--arch",
            "-a"
          ],
          "description": "For example x86 or x86_64.",
          "args": {
            "name": "arch",
            "description": "For example x86 or x86_64.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--force",
            "-f"
          ],
          "description": "Force recompilation"
        },
        {
          "names": [
            "--combined"
          ],
          "description": "Build in a single compiler run"
        },
        {
          "names": [
            "--parallel"
          ],
          "description": "Parallel compiler instances"
        },
        {
          "names": [
            "--nodeps"
          ],
          "description": "Skip dependency resolution"
        }
      ],
      "args": [
        {
          "name": "package",
          "description": "Package name, optionally name@version. Defaults to the package in the current directory.",
          "isOptional": true
        }
      ]
    },
    {
      "name": "test",
      "description": "Run unit tests",
      "options": [
        {
          "names": [
            "--build",
            "-b"
          ],
          "description": "One of the built-in build types or a custom type.",
          "args": {
            "name": "build",
            "description": "One of the built-in build types or a custom type.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Configuration",
          "args": {
            "name": "config",
            "isOptional": false
          }
        },
        {
          "names": [
            "--compiler"
          ],
          "description": "dmd, gdc, ldc, gdmd, ldmd or a path to a compiler binary.",
          "args": {
            "name": "compiler",
            "description": "dmd, gdc, ldc, gdmd, ldmd or a path to a compiler binary.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--arch",
            "-a"
          ],
          "description": "For example x86 or x86_64.",
          "args": {
            "name": "arch",
            "description": "For example x86 or x86_64.",
            "isOptional": false
          }
        },
        {
          "names": [
            "--force",
            "-f"
          ],
          "description": "Force recompilation"
        },
        {
          "names": [
            "--combined"
          ],
          "description": "Build in a single compiler run"
        },
        {
          "names": [
            "--parallel"
          ],
          "description": "Parallel compiler instances"
        },
        {
          "names": [
            "--nodeps"
          ],
          "description": "Skip dependency resolution"
        },
        {
          "names": [
            "--coverage"
          ],
          "description": "Code coverage"
        },
        {
          "names": [
            "--main-file"
          ],
          "description": "Custom main file",
          "args": {
            "name": "main_file",
            "isOptional": false,
            "template": "filepaths"
          }
        }
      ],
      "args": [
        {
          "name": "package",
          "description": "Package name, optionally name@version. Defaults to the package in the current directory.",
          "isOptional": true
        }
      ]
    },
    {
      "name": "init",
      "description": "Create a package skeleton",
      "options": [
        {
          "names": [
            "--type",
            "-t"
          ],
          "description": "Project type",
          "args": {
            "name": "type",
            "isOptional": false,
            "suggestions": [
              {
                "name": "minimal",
                "description": "minimal"
              },
              {
                "name": "vibe.d",
                "description": "vibe.d"
              },
              {
                "name": "deimos",
                "description": "deimos"
              },
              {
                "name": "custom",
                "description": "custom"
              }
            ]
          }
        },
        {
          "names": [
            "--format",
            "-f"
          ],
          "description": "Package file format",
          "args": {
            "name": "format",
            "isOptional": false,
            "suggestions": [
              {
                "name": "json",
                "description": "json"
              },
              {
                "name": "sdl",
                "description": "sdl"
              }
            ]
          }
        },
        {
          "names": [
            "--non-interactive",
            "-n"
          ],
          "description": "Non-interactive"
        }
      ],
      "args": [
        {
          "name": "directory",
          "description": "Defaults to the current directory.",
          "isOptional": true,
          "template": "folders"
        }
      ]
    }
  ]
}
