{
  "description": "Check out, branch and commit packages with osc. Building, requests, project metadata and the other commands are left out.",
  "name": "osc",
  "subcommands": [
    {
      "name": "checkout",
      "description": "Check out a package",
      "options": [
        {
          "names": [
            "--revision",
            "-r"
          ],
          "description": "Revision",
          "args": {
            "name": "revision",
            "isOptional": false
          }
        },
        {
          "names": [
            "--unexpand-link",
            "-u"
          ],
          "description": "Keep _link unexpanded"
        },
        {
          "names": [
            "--meta",
            "-M"
          ],
          "description": "Meta data instead of sources"
        },
        {
          "names": [
            "--current-dir",
            "-c"
          ],
          "description": "Place package in current directory"
        },
        {
          "names": [
            "--output-dir",
            "-o"
          ],
          "description": "Output directory",
          "args": {
            "name": "output_dir",
            "isOptional": false,
            "template": "folders"
          }
        },
        {
          "names": [
            "--source-service-files",
            "-s"
          ],
          "description": "Run source services"
        }
      ],
      "args": [
        {
          "name": "project",
          "isOptional": true
        },
        {
          "name": "package",
          "description": "Omit to check out the entire project.",
          "isOptional": true
        }
      ]
    },
    {
      "name": "branch",
      "description": "Branch a package",
      "options": [
        {
          "names": [
            "--checkout",
            "-c"
          ],
          "description": "Check out afterwards"
        },
        {
          "names": [
            "--force",
            "-f"
          ],
          "description": "Force, overwrite target",
          "isDangerous": true
        },
        {
          "names": [
            "--message",
            "-m"
          ],
          "description": "Message",
          "args": {
            "name": "message",
            "isOptional": false
          }
        },
        {
          "names": [
            "--revision",
            "-r"
          ],
          "description": "Revision",
          "args": {
            "name": "revision",
            "isOptional": false
          }
        },
        {
          "names": [
            "--nodevelproject"
          ],
          "description": "Do not follow the devel project"
        },
        {
          "names": [
            "--disable-build"
          ],
          "description": "Disable building the branch"
        }
      ],
      "args": [
        {
          "name": "source_project",
          "isOptional": true
        },
        {
          "name": "source_package",
          "isOptional": true
        },
        {
          "name": "target_project",
          "description": "Use . for the default.",
          "isOptional": true
        },
        {
          "name": "target_package",
          "isOptional": true
        }
      ]
    },
    {
      "name": "commit",
      "description": "Commit changes",
      "options": [
        {
          "names": [
            "--message",
            "-m"
          ],
          "description": "Log message",
          "args": {
            "name": "message",
            "isOptional": false
          }
        },
        {
          "names": [
            "--no-message",
            "-n"
          ],
          "description": "No log message"
        },
        {
          "names": [
            "--file",
            "-F"
          ],
          "description": "Read message from file",
          "args": {
            "name": "file",
            "isOptional": false,
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--force",
            "-f"
          ],
          "description": "Allow empty commit",
          "isDangerous": true
        }
      ],
      "args": [
        {
          "name": "paths",
          "description": "Omit to commit the current directory.",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    }
  ]
}
