{
  "description": "The everyday quilt commands: new, add, refresh, push and pop. Other commands are left out.",
  "name": "quilt",
  "subcommands": [
    {
      "name": "new",
      "description": "Create a new patch after the topmost one.",
      "options": [
        {
          "names": [
            "-p"
          ],
          "description": "-p0 or -p1.",
          "args": {
            "name": "strip",
            "description": "-p0 or -p1.",
            "isOptional": false,
            "suggestions": [
              {
                "name": "0",
                "description": "-p0"
              },
              {
                "name": "1",
                "description": "-p1"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "patchname",
          "isOptional": true
        }
      ]
    },
    {
      "name": "add",
      "description": "Files must be added before they are modified.",
      "options": [
        {
          "names": [
            "-P"
          ],
          "description": "Defaults to the topmost patch.",
          "args": {
            "name": "patch",
            "description": "Defaults to the topmost patch.",
            "isOptional": false
          }
        }
      ],
      "args": [
        {
          "name": "files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "refresh",
      "description": "Regenerate the topmost or named patch from the working tree.",
      "options": [
        {
          "names": [
            "--no-timestamps"
          ],
          "description": "No timestamps"
        },
        {
          "names": [
            "--no-index"
          ],
          "description": "No Index: lines"
        },
        {
          "names": [
            "--diffstat"
          ],
          "description": "Add diffstat"
        },
        {
          "names": [
            "--sort"
          ],
          "description": "Sort files"
        },
        {
          "names": [
            "--backup"
          ],
          "description": "Keep backup"
        },
        {
          "names": [
            "--strip-trailing-whitespace"
          ],
          "description": "Strip trailing whitespace"
        },
        {
          "names": [
            "-f"
          ],
          "description": "Force (patch not on top)"
        }
      ],
      "args": [
        {
          "name": "patch",
          "description": "Defaults to the topmost patch.",
          "isOptional": true
        }
      ]
    },
    {
      "name": "push",
      "description": "Apply the next patch, N patches, or all.",
      "options": [
        {
          "names": [
            "-a"
          ],
          "description": "Apply all patches"
        },
        {
          "names": [
            "-f"
          ],
          "description": "Force apply",
          "isDangerous": true
        },
        {
          "names": [
            "-q"
          ],
          "description": "Quiet"
        },
        {
          "names": [
            "-v"
          ],
          "description": "Verbose"
        },
        {
          "names": [
            "--fuzz"
          ],
          "description": "Max fuzz",
          "args": {
            "name": "fuzz",
            "isOptional": false
          }
        },
        {
          "names": [
            "--leave-rejects"
          ],
          "description": "Leave reject files"
        },
        {
          "names": [
            "--refresh"
          ],
          "description": "Refresh after applying"
        }
      ],
      "args": [
        {
          "name": "target",
          "isOptional": true
        }
      ]
    },
    {
      "name": "pop",
      "description": "Remove the topmost patch, N patches, or all.",
      "options": [
        {
          "names": [
            "-a"
          ],
          "description": "Remove all patches"
        },
        {
          "names": [
            "-f"
          ],
          "description": "Force remove",
          "isDangerous": true
        },
        {
          "names": [
            "-R"
          ],
          "description": "Always verify clean removal"
        },
        {
          "names": [
            "-q"
          ],
          "description": "Quiet"
        },
        {
          "names": [
            "-v"
          ],
          "description": "Verbose"
        },
        {
          "names": [
            "--refresh"
          ],
          "description": "Refresh before unapplying"
        }
      ],
      "args": [
        {
          "name": "target",
          "isOptional": true
        }
      ]
    }
  ]
}
