{
  "description": "Common Oxen version-control jobs: add, commit, clone and push. Other subcommands are not covered.",
  "name": "oxen",
  "subcommands": [
    {
      "name": "add",
      "description": "Stage files",
      "args": [
        {
          "name": "files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "commit",
      "description": "Commit staged files",
      "options": [
        {
          "names": [
            "--message",
            "-m"
          ],
          "description": "Commit message",
          "args": {
            "name": "message",
            "isOptional": false
          }
        },
        {
          "names": [
            "--allow-empty"
          ],
          "description": "Allow empty commit"
        }
      ]
    },
    {
      "name": "clone",
      "description": "Clone a repository",
      "options": [
        {
          "names": [
            "--branch",
            "-b"
          ],
          "description": "Branch",
          "args": {
            "name": "branch",
            "isOptional": false
          }
        },
        {
          "names": [
            "--all",
            "-a"
          ],
          "description": "Full history and data"
        },
        {
          "names": [
            "--filter"
          ],
          "description": "Directory filter",
          "args": {
            "name": "filter",
            "isOptional": false
          }
        },
        {
          "names": [
            "--depth"
          ],
          "description": "Used together with the filter.",
          "args": {
            "name": "depth",
            "description": "Used together with the filter.",
            "isOptional": false
          }
        }
      ],
      "args": [
        {
          "name": "url",
          "isOptional": true
        }
      ]
    },
    {
      "name": "push",
      "description": "Push to a remote",
      "options": [
        {
          "names": [
            "--delete",
            "-d"
          ],
          "description": "Delete the remote branch",
          "isDangerous": true
        },
        {
          "names": [
            "--force",
            "-f"
          ],
          "description": "Force push",
          "isDangerous": true
        }
      ],
      "args": [
        {
          "name": "remote",
          "isOptional": true
        },
        {
          "name": "branch",
          "isOptional": true
        }
      ]
    }
  ]
}
