{
  "options": [
    { "arg": "--url <url>", "desc": "Jenkins URL" },
    { "arg": "--interactive", "desc": "Interactive mode, username and password will be prompted" }
  ],
  "commands": {
    "build": {
      "desc": "Trigger a build with optional parameters",
      "args": [
        { "name": "job", "rules": [ "required" ] },
        { "name": "params", "optional": true }
      ],
      "options": [
        { "arg": "-c, --console", "desc": "Display console output of the triggered build progress" },
        { "arg": "-p, --pending <pending>", "desc": "Pending time (in milliseconds) before displaying console output, default: 5000" }
      ],
      "examples": [
        "nestor build <job> <\"param1=value1&param2=value2\">",
        "nestor build --console <job>",
        "nestor build --pending <5000> --console <job>",
        "nestor build <job> <\"param1=value1&param2=value2\"> --console",
        "JENKINS_URL=http://host:8080 nestor build --interactive <job>",
        "JENKINS_URL=http://host:8080 nestor build <job>",
        "nestor build --url <http://host:8080> <job>"
      ]
    },
    "console": {
      "desc": "Display latest build console output",
      "args": [
        { "name": "job", "rules": [ "required" ] },
        { "name": "build", "optional": true }
      ],
      "examples": [
        "nestor console <job>",
        "nestor console <job> <build>"
      ]
    },
    "dashboard": {
      "desc": "View status of all jobs"
    },
    "discover": {
      "desc": "Discover Jenkins instance running on a specified host",
      "examples": [
        "nestor discover [host]"
      ]
    },
    "executor": {
      "desc": "View executors' status (running builds)"
    },
    "last": {
        "desc": "View basic data on a job's last build",
        "args": [
            { "name": "job", "rules": [ "required" ] }
        ]
    },
    "create": {
      "desc": "Alias for create-job",
      "args": [
        { "name": "job", "rules": [ "required" ] },
        { "name": "config", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor create <job> <path/to/config.xml>"
      ]
    },
    "create-job": {
      "desc": "Create a new job with specified config.xml",
      "args": [
        { "name": "job", "rules": [ "required" ] },
        { "name": "config", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor create-job <job> <path/to/config.xml>"
      ]
    },
    "job": {
      "desc": "Alias for read-job",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor job <job>"
      ]
    },
    "read-job": {
      "desc": "View job status reports",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor read-job <job>"
      ]
    },
    "update": {
      "desc": "Alias for update-job",
      "args": [
        { "name": "job", "rules": [ "required" ] },
        { "name": "config", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor update <job> <path/to/config.xml>"
      ]
    },
    "update-job": {
      "desc": "Update an existing job with specified config.xml",
      "args": [
        { "name": "job", "rules": [ "required" ] },
        { "name": "config", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor update-job <job> <path/to/config.xml>"
      ]
    },
    "delete": {
      "desc": "Alias for delete-job",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor job <job>"
      ]
    },
    "delete-job": {
      "desc": "Delete an existing job",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor delete-job <job>"
      ]
    },
    "stop": {
      "desc": "Alias for stop-job",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ]
    },
    "stop-job": {
      "desc": "Stop the currently running build",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ]
    },
    "enable": {
      "desc": "Alias for enable-job",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor enable <job>"
      ]
    },
    "enable-job": {
      "desc": "Enable a job",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor enable-job <job>"
      ]
    },
    "disable": {
      "desc": "Alias for disable-job",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor disable <job>"
      ]
    },
    "disable-job": {
      "desc": "Disable a job",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor disable-job <job>"
      ]
    },
    "copy": {
      "desc": "Alias for copy-job",
      "args": [
        { "name": "job1", "rules": [ "required" ] },
        { "name": "job2", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor copy <existing_job> <new_job>"
      ]
    },
    "copy-job": {
      "desc": "Copy an existing job",
      "args": [
        { "name": "job1", "rules": [ "required" ] },
        { "name": "job2", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor copy-job <existing_job> <new_job>"
      ]
    },
    "config": {
      "desc": "Alias for fetch-job-config",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor config <job>"
      ]
    },
    "fetch-job-config": {
      "desc": "Fetch the config.xml of an existing job",
      "args": [
        { "name": "job", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor fetch-job-config <job>"
      ]
    },
    "create-view": {
      "desc": "EXPERIMENTAL - Create a new view with specified config.xml",
      "args": [
        { "name": "view", "rules": [ "required" ] },
        { "name": "config", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor create-view <view> <path/to/config.xml>"
      ]
    },
    "update-view": {
      "desc": "EXPERIMENTAL - Update an existing view with specified config.xml",
      "args": [
        { "name": "view", "rules": [ "required" ] },
        { "name": "config", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor update <view> <path/to/config.xml>"
      ]
    },
    "fetch-view-config": {
      "desc": "Fetch the config.xml of an existing view",
      "args": [
        { "name": "view", "rules": [ "required" ] }
      ],
      "examples": [
        "nestor fetch-view-config <view>"
      ]
    },
    "queue": {
      "desc": "View queued jobs",
      "examples": [
        "nestor queue"
      ]
    },
    "ver": {
      "desc": "View Jenkins version number",
      "examples": [
        "nestor ver"
      ]
    },
    "feed": {
      "desc": "Retrieve Jenkins feed",
      "options": [
        { "arg": "-j, --job <job>", "desc": "Jenkins job name" },
        { "arg": "-v, --view <view>", "desc": "Jenkins view name" }
      ],
      "examples": [
        "nestor --job <job> feed",
        "nestor --view <view> feed"
      ]
    }
  }
}
