{
  "description": "The everyday hg jobs: clone, status, commit and log. Other commands and global options are left out.",
  "name": "hg",
  "subcommands": [
    {
      "name": "clone",
      "description": "Clone a repository",
      "options": [
        {
          "names": [
            "--noupdate",
            "-U"
          ],
          "description": "Bare clone (no working directory)"
        },
        {
          "names": [
            "--updaterev",
            "-u"
          ],
          "description": "Revision to check out",
          "args": {
            "name": "updaterev",
            "isOptional": false
          }
        },
        {
          "names": [
            "--rev",
            "-r"
          ],
          "description": "Only up to revision",
          "args": {
            "name": "rev",
            "isOptional": false,
            "isVariadic": true
          },
          "isRepeatable": true
        },
        {
          "names": [
            "--branch",
            "-b"
          ],
          "description": "Only branch",
          "args": {
            "name": "branch",
            "isOptional": false,
            "isVariadic": true
          },
          "isRepeatable": true
        },
        {
          "names": [
            "--stream"
          ],
          "description": "Stream clone"
        }
      ],
      "args": [
        {
          "name": "source",
          "isOptional": true
        },
        {
          "name": "dest",
          "isOptional": true,
          "template": "folders"
        }
      ]
    },
    {
      "name": "status",
      "description": "Show changed files",
      "options": [
        {
          "names": [
            "--all",
            "-A"
          ],
          "description": "Show all files"
        },
        {
          "names": [
            "--modified",
            "-m"
          ],
          "description": "Only modified"
        },
        {
          "names": [
            "--added",
            "-a"
          ],
          "description": "Only added"
        },
        {
          "names": [
            "--removed",
            "-r"
          ],
          "description": "Only removed"
        },
        {
          "names": [
            "--deleted",
            "-d"
          ],
          "description": "Only deleted"
        },
        {
          "names": [
            "--unknown",
            "-u"
          ],
          "description": "Only unknown"
        },
        {
          "names": [
            "--no-status",
            "-n"
          ],
          "description": "Hide status prefix"
        },
        {
          "names": [
            "--rev"
          ],
          "description": "Compare to revision",
          "args": {
            "name": "rev",
            "isOptional": false,
            "isVariadic": true
          },
          "isRepeatable": true
        }
      ],
      "args": [
        {
          "name": "files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "commit",
      "description": "Commit changes",
      "options": [
        {
          "names": [
            "--message",
            "-m"
          ],
          "description": "Commit message",
          "args": {
            "name": "message",
            "isOptional": false
          }
        },
        {
          "names": [
            "--addremove",
            "-A"
          ],
          "description": "Add new and remove missing files"
        },
        {
          "names": [
            "--amend"
          ],
          "description": "Amend the previous commit",
          "isDangerous": true
        },
        {
          "names": [
            "--close-branch"
          ],
          "description": "Close the branch"
        },
        {
          "names": [
            "--user",
            "-u"
          ],
          "description": "Author",
          "args": {
            "name": "user",
            "isOptional": false
          }
        },
        {
          "names": [
            "--date",
            "-d"
          ],
          "description": "Date",
          "args": {
            "name": "date",
            "isOptional": false
          }
        },
        {
          "names": [
            "--include",
            "-I"
          ],
          "description": "Include pattern",
          "args": {
            "name": "include",
            "isOptional": false,
            "isVariadic": true
          },
          "isRepeatable": true
        },
        {
          "names": [
            "--exclude",
            "-X"
          ],
          "description": "Exclude pattern",
          "args": {
            "name": "exclude",
            "isOptional": false,
            "isVariadic": true
          },
          "isRepeatable": true
        },
        {
          "names": [
            "--interactive",
            "-i"
          ],
          "description": "Interactive"
        }
      ],
      "args": [
        {
          "name": "files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "log",
      "description": "Show history",
      "options": [
        {
          "names": [
            "--rev",
            "-r"
          ],
          "description": "Revision or range",
          "args": {
            "name": "rev",
            "isOptional": false,
            "isVariadic": true
          },
          "isRepeatable": true
        },
        {
          "names": [
            "--keyword",
            "-k"
          ],
          "description": "Keyword in commit",
          "args": {
            "name": "keyword",
            "isOptional": false,
            "isVariadic": true
          },
          "isRepeatable": true
        },
        {
          "names": [
            "--user",
            "-u"
          ],
          "description": "Author",
          "args": {
            "name": "user",
            "isOptional": false,
            "isVariadic": true
          },
          "isRepeatable": true
        },
        {
          "names": [
            "--date",
            "-d"
          ],
          "description": "Date range",
          "args": {
            "name": "date",
            "isOptional": false
          }
        },
        {
          "names": [
            "--limit",
            "-l"
          ],
          "description": "Max entries",
          "args": {
            "name": "limit",
            "isOptional": false
          }
        },
        {
          "names": [
            "--patch",
            "-p"
          ],
          "description": "Show patch"
        },
        {
          "names": [
            "--stat"
          ],
          "description": "Show diffstat"
        },
        {
          "names": [
            "--graph",
            "-G"
          ],
          "description": "Show graph"
        },
        {
          "names": [
            "--follow",
            "-f"
          ],
          "description": "Follow file renames"
        },
        {
          "names": [
            "--no-merges",
            "-M"
          ],
          "description": "Hide merges"
        },
        {
          "names": [
            "--template",
            "-T"
          ],
          "description": "Output template",
          "args": {
            "name": "template",
            "isOptional": false
          }
        }
      ],
      "args": [
        {
          "name": "file",
          "isOptional": true,
          "template": "filepaths"
        }
      ]
    }
  ]
}
