{
  "id": "siege",
  "name": "Siege",
  "homepage": "https://github.com/JoeDog/siege",
  "description": "An HTTP load-testing and benchmarking utility",
  "executables": [
    "siege"
  ],
  "dotfiles": {
    "paths": [
      "~/.siege/siege.conf"
    ],
    "secret": [],
    "secret_paths": [
      {
        "file": "~/.siege/siege.conf",
        "match": {
          "prefix": [
            "login"
          ]
        }
      }
    ]
  },
  "commands": {
    "format": 1,
    "label": "Load-test a URL",
    "description": "Run siege against one URL or a list of URLs in a file. Config-file directives, POST bodies in URLs, log files and rc files are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": true
    },
    "source": [
      {
        "id": "siege-man",
        "kind": "manual",
        "url": "https://manpages.debian.org/unstable/siege/siege.1.en.html",
        "revision": "siege 4.1.7 man page",
        "evidence": "siege [options] <URL>\nsiege [options] -f urls.txt\n-c NUM,\n--concurrent=NUM\nThis option allows you to set the concurrent number of users.\n-r NUM,\n--reps=NUM|once\n-t NUMm,\n--time=NUMm\n-d NUM,\n--delay=NUM\n-b,\n--benchmark\n-i,\n--internet\n-f FILE,\n--file=FILE\n-H \"header: value\",\n--header=\"Header: value\"\n-v, --verbose\n-q, --quiet\n--no-parser\n--no-follow"
      }
    ],
    "field": [
      {
        "id": "url",
        "label": "URL",
        "description": "Quote the URL. Leave empty when using a URL file.",
        "type": "url",
        "position": 0,
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "file",
        "label": "URL list file",
        "type": "path",
        "option": [
          "--file",
          "-f"
        ],
        "path": {
          "kind": "file",
          "role": "input"
        },
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "concurrent",
        "label": "Concurrent users",
        "type": "integer",
        "option": [
          "--concurrent",
          "-c"
        ],
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "reps",
        "label": "Repetitions per user",
        "description": "A number, or the keyword once.",
        "type": "string",
        "option": [
          "--reps",
          "-r"
        ],
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "time",
        "label": "Run time",
        "description": "Number plus S, M or H, with no space, e.g. 1M.",
        "type": "string",
        "option": [
          "--time",
          "-t"
        ],
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "delay",
        "label": "Delay between requests (seconds)",
        "type": "number",
        "option": [
          "--delay",
          "-d"
        ],
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "benchmark",
        "label": "Benchmark mode (no delay)",
        "type": "boolean",
        "option": [
          "--benchmark",
          "-b"
        ],
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "internet",
        "label": "Internet mode (random URL order)",
        "type": "boolean",
        "option": [
          "--internet",
          "-i"
        ],
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "header",
        "label": "Extra header",
        "description": "Format: \"Header: value\".",
        "type": "string",
        "option": [
          "--header",
          "-H"
        ],
        "multiple": true,
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "no_parser",
        "label": "Do not fetch page elements",
        "type": "boolean",
        "option": [
          "--no-parser"
        ],
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "no_follow",
        "label": "Do not follow redirects",
        "type": "boolean",
        "option": [
          "--no-follow"
        ],
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "verbose",
        "label": "Verbose",
        "type": "count",
        "option": [
          "--verbose",
          "-v"
        ],
        "sources": [
          "siege-man"
        ]
      },
      {
        "id": "quiet",
        "label": "Quiet",
        "type": "boolean",
        "option": [
          "--quiet",
          "-q"
        ],
        "sources": [
          "siege-man"
        ]
      }
    ],
    "task": [
      {
        "id": "quick",
        "label": "Quick test of one URL",
        "set": {
          "concurrent": [
            10
          ],
          "reps": [
            "5"
          ]
        },
        "fields": [
          "url",
          "concurrent",
          "reps",
          "delay"
        ],
        "required": [
          "url"
        ]
      },
      {
        "id": "timed",
        "label": "Timed benchmark",
        "set": {
          "benchmark": [
            true
          ]
        },
        "fields": [
          "url",
          "concurrent",
          "time",
          "benchmark"
        ],
        "required": [
          "url",
          "time"
        ]
      },
      {
        "id": "urlfile",
        "label": "Run a URL list",
        "fields": [
          "file",
          "concurrent",
          "reps",
          "internet"
        ],
        "required": [
          "file"
        ]
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "url",
          "file",
          "concurrent",
          "reps",
          "time",
          "delay"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "benchmark",
          "internet",
          "header",
          "no_parser",
          "no_follow",
          "verbose",
          "quiet"
        ]
      }
    ]
  }
}
