{
  "name": "molecule",
  "description": "Molecule aids in the development and testing of Ansible roles",
  "options": [
    {
      "names": [
        "--help"
      ],
      "description": "Show help",
      "isPersistent": true
    },
    {
      "names": [
        "--version"
      ],
      "description": "Show molecule version"
    }
  ],
  "subcommands": [
    {
      "name": "check",
      "description": "Use the provisioner to perform a Dry-Run (destroy, dependency, create, prepare, converge)",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        },
        {
          "names": [
            "--parallel"
          ],
          "description": "Enable parallel mode",
          "exclusiveOn": [
            "--no-parallel"
          ]
        },
        {
          "names": [
            "--no-parallel"
          ],
          "description": "Disable parallel mode",
          "exclusiveOn": [
            "--parallel"
          ]
        }
      ]
    },
    {
      "name": "cleanup",
      "description": "Use the provisioner to cleanup any changes made to external systems during the stages of testing",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        }
      ]
    },
    {
      "name": "converge",
      "description": "Use the provisioner to configure instances (dependency, create, prepare converge)",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        }
      ]
    },
    {
      "name": "create",
      "description": "Use the provisioner to start the instances",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        },
        {
          "names": [
            "--driver-name",
            "-d"
          ],
          "description": "Name of driver to use. (delegated)",
          "args": [
            {
              "name": "TEXT",
              "suggestions": [
                "delegated",
                "docker",
                "podman",
                "vagrant",
                "azure",
                "hetzner"
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "dependency",
      "description": "Manage the role's dependencies",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        }
      ]
    },
    {
      "name": "destroy",
      "description": "Use the provisioner to destroy the instances",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        },
        {
          "names": [
            "--driver-name",
            "-d"
          ],
          "description": "Name of driver to use. (delegated)",
          "args": [
            {
              "name": "TEXT",
              "suggestions": [
                "delegated",
                "docker",
                "podman",
                "vagrant",
                "azure",
                "hetzner"
              ]
            }
          ]
        },
        {
          "names": [
            "--all"
          ],
          "description": "Destroy all scenarios. Default is False",
          "exclusiveOn": [
            "--no-all"
          ]
        },
        {
          "names": [
            "--no-all"
          ],
          "description": "Do not destroy all scenarios",
          "exclusiveOn": [
            "--all"
          ]
        },
        {
          "names": [
            "--parallel"
          ],
          "description": "Enable parallel mode",
          "exclusiveOn": [
            "--no-parallel"
          ]
        },
        {
          "names": [
            "--no-parallel"
          ],
          "description": "Disable parallel mode",
          "exclusiveOn": [
            "--parallel"
          ]
        }
      ]
    },
    {
      "name": "drivers",
      "description": "List drivers",
      "options": [
        {
          "names": [
            "--format",
            "-f"
          ],
          "description": "Change output format. (simple)",
          "args": [
            {
              "name": "TEXT",
              "suggestions": [
                "simple",
                "plain"
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "idempotence",
      "description": "Use the provisioner to configure the instances and parse the output to determine idempotence",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        }
      ]
    },
    {
      "name": "init",
      "description": "Initialize a new role or scenario",
      "subcommands": [
        {
          "name": "role",
          "description": "Initialize a new role for use with Molecule, namespace is required outside collections, like acme.myrole",
          "parserDirectives": {
            "optionsMustPrecedeArgs": true
          },
          "options": [
            {
              "names": [
                "--dependency-name"
              ],
              "description": "Name of dependency to initialize. (galaxy)",
              "args": [
                {
                  "name": "TEXT",
                  "suggestions": [
                    "galaxy"
                  ]
                }
              ]
            },
            {
              "names": [
                "--driver-name",
                "-d"
              ],
              "description": "Name of driver to use. (delegated)",
              "args": [
                {
                  "name": "TEXT",
                  "suggestions": [
                    "delegated",
                    "docker",
                    "podman",
                    "vagrant",
                    "azure",
                    "hetzner"
                  ]
                }
              ]
            },
            {
              "names": [
                "--lint-name"
              ],
              "description": "Name of lint to initialize. (yamllint)",
              "args": [
                {
                  "name": "TEXT",
                  "suggestions": [
                    "yamllint"
                  ]
                }
              ]
            },
            {
              "names": [
                "--provisioner-name"
              ],
              "description": "Name of provisioner to initialize. (ansible)",
              "args": [
                {
                  "name": "TEXT",
                  "suggestions": [
                    "ansible"
                  ]
                }
              ]
            },
            {
              "names": [
                "--verifier-name"
              ],
              "description": "Name of verifier to initialize. (ansible)",
              "args": [
                {
                  "name": "TEXT",
                  "suggestions": [
                    "ansible",
                    "testinfra"
                  ]
                }
              ]
            }
          ],
          "args": [
            {
              "name": "ROLE_NAME"
            }
          ]
        },
        {
          "name": "scenario",
          "description": "Initialize a new scenario for use with Molecule",
          "parserDirectives": {
            "optionsMustPrecedeArgs": true
          },
          "options": [
            {
              "names": [
                "--dependency-name"
              ],
              "description": "Name of dependency to initialize. (galaxy)",
              "args": [
                {
                  "name": "TEXT",
                  "suggestions": [
                    "galaxy"
                  ]
                }
              ]
            },
            {
              "names": [
                "--driver-name",
                "-d"
              ],
              "description": "Name of driver to use. (delegated)",
              "args": [
                {
                  "name": "TEXT",
                  "suggestions": [
                    "delegated",
                    "docker",
                    "podman",
                    "vagrant",
                    "azure",
                    "hetzner"
                  ]
                }
              ]
            },
            {
              "names": [
                "--lint-name"
              ],
              "description": "Name of lint to initialize. (yamllint)",
              "args": [
                {
                  "name": "TEXT",
                  "suggestions": [
                    "yamllint"
                  ]
                }
              ]
            },
            {
              "names": [
                "--provisioner-name"
              ],
              "description": "Name of provisioner to initialize. (ansible)",
              "args": [
                {
                  "name": "TEXT",
                  "suggestions": [
                    "ansible"
                  ]
                }
              ]
            },
            {
              "names": [
                "--role-name",
                "-r"
              ],
              "description": "Name of the role to create",
              "args": [
                {
                  "name": "TEXT"
                }
              ]
            },
            {
              "names": [
                "--verifier-name"
              ],
              "description": "Name of verifier to initialize. (ansible)",
              "args": [
                {
                  "name": "TEXT",
                  "suggestions": [
                    "ansible",
                    "testinfra"
                  ]
                }
              ]
            }
          ],
          "args": [
            {
              "name": "SCENARIO_NAME"
            }
          ]
        }
      ]
    },
    {
      "name": "lint",
      "description": "Lint the role (dependency, lint)",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        }
      ]
    },
    {
      "name": "list",
      "description": "List status of instances",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        },
        {
          "names": [
            "--format",
            "-f"
          ],
          "description": "Change output format. (simple)",
          "args": [
            {
              "name": "TEXT",
              "suggestions": [
                "simple",
                "plain",
                "yaml"
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "login",
      "description": "Log in to one instance",
      "options": [
        {
          "names": [
            "--host",
            "-h"
          ],
          "description": "Host to access",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        },
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        }
      ]
    },
    {
      "name": "matrix",
      "description": "List matrix of steps used to test instances",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        }
      ]
    },
    {
      "name": "prepare",
      "description": "Use the provisioner to prepare the instances into a particular starting state",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        },
        {
          "names": [
            "--driver-name",
            "-d"
          ],
          "description": "Name of driver to use. (delegated)",
          "args": [
            {
              "name": "TEXT",
              "suggestions": [
                "delegated",
                "docker",
                "podman",
                "vagrant",
                "azure",
                "hetzner"
              ]
            }
          ]
        },
        {
          "names": [
            "--force"
          ],
          "description": "Enable force mode. Default is disabled",
          "exclusiveOn": [
            "--no-force"
          ]
        },
        {
          "names": [
            "--no-force"
          ],
          "description": "Disable force mode",
          "exclusiveOn": [
            "--force"
          ]
        }
      ]
    },
    {
      "name": "reset",
      "description": "Reset molecule temporary folders",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        }
      ]
    },
    {
      "name": "side-effect",
      "description": "Use the provisioner to perform side-effects to the instances",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        }
      ]
    },
    {
      "name": "syntax",
      "description": "Use the provisioner to syntax check the role",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        }
      ]
    },
    {
      "name": "test",
      "description": "Test (dependency, lint, cleanup, destroy, syntax, create, prepare, converge, idempotence, side_effect, verify, cleanup, destroy)",
      "options": [
        {
          "names": [
            "--scenario-name",
            "-s"
          ],
          "description": "Name of the scenario to target. (default)",
          "args": [
            {
              "name": "TEXT"
            }
          ]
        },
        {
          "names": [
            "--driver-name",
            "-d"
          ],
          "description": "Name of driver to use. (delegated)",
          "args": [
            {
              "name": "TEXT",
              "suggestions": [
                "delegated",
                "docker",
                "podman",
                "vagrant",
                "azure",
                "hetzner"
              ]
            }
          ]
        },
        {
          "names": [
            "--all"
          ],
          "description": "Test all scenarios. Default is False",
          "exclusiveOn": [
            "--no-all"
          ]
        },
        {
          "names": [
            "--no-all"
          ],
          "description": "Do not test all scenarios",
          "exclusiveOn": [
            "--all"
          ]
        },
        {
          "names": [
            "--destroy"
          ],
          "description": "The destroy strategy used at the conclusion of a Molecule run (always)",
          "args": [
            {
              "name": "TEXT",
              "suggestions": [
                "always",
                "never"
              ]
            }
          ]
        },
        {
          "names": [
            "--parallel"
          ],
          "description": "Enable parallel mode",
          "exclusiveOn": [
            "--no-parallel"
          ]
        },
        {
          "names": [
            "--no-parallel"
          ],
          "description": "Disable parallel mode",
          "exclusiveOn": [
            "--parallel"
          ]
        }
      ]
    }
  ]
}
