{
  "name": "hexo",
  "description": "Command line interface for Hexo, a static site generator",
  "subcommands": [
    {
      "name": "config",
      "description": "Get or set configurations",
      "args": [
        {
          "name": "name",
          "description": "Setting name. Leave it blank if you want to show all configurations"
        },
        {
          "name": "value",
          "description": "New value of a setting. Leave it blank if you just want to show a single configuration"
        }
      ]
    },
    {
      "name": "help",
      "description": "Displays a help for each command",
      "args": [
        {
          "name": "command",
          "description": "The command to display help for"
        }
      ]
    },
    {
      "name": "init",
      "description": "Create a new Hexo folder",
      "options": [
        {
          "names": [
            "--no-clone"
          ],
          "description": "Copy files instead of cloning from GitHub"
        },
        {
          "names": [
            "--no-install"
          ],
          "description": "Skip npm install"
        }
      ],
      "args": [
        {
          "name": "destination",
          "description": "Folder path. Initialize in current folder if not specified",
          "template": "folders"
        }
      ]
    },
    {
      "name": "new",
      "description": "Create a new article",
      "options": [
        {
          "names": [
            "-p",
            "--path"
          ],
          "description": "Post path. Customize the path of the post",
          "takes_arg": true,
          "arg": {
            "name": "path",
            "description": "The path of the post",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "-r",
            "--replace"
          ],
          "description": "Replace the current post if it existed"
        },
        {
          "names": [
            "-s",
            "--slug"
          ],
          "description": "Post slug. Customize the URL of the post",
          "takes_arg": true,
          "arg": {
            "name": "slug",
            "description": "The slug of the post"
          }
        }
      ],
      "args": [
        {
          "name": "layout",
          "description": "The layout to use",
          "suggestions": [
            "post",
            "page",
            "draft"
          ]
        },
        {
          "name": "title",
          "description": "The title of the post"
        }
      ]
    },
    {
      "name": "generate",
      "description": "Generate static files",
      "options": [
        {
          "names": [
            "-d",
            "--deploy"
          ],
          "description": "Deploy after generation finishes"
        },
        {
          "names": [
            "-f",
            "--force"
          ],
          "description": "Force regenerate"
        },
        {
          "names": [
            "-w",
            "--watch"
          ],
          "description": "Watch file changes"
        },
        {
          "names": [
            "-b",
            "--bail"
          ],
          "description": "Raise an error if any unhandled exception is thrown during generation"
        },
        {
          "names": [
            "-c",
            "--concurrency"
          ],
          "description": "Maximum number of files to be generated in parallel. Default is infinity",
          "takes_arg": true,
          "arg": {
            "name": "concurrency",
            "description": "The number of files to generate in parallel"
          }
        }
      ]
    },
    {
      "name": "publish",
      "description": "Publish a draft",
      "args": [
        {
          "name": "layout",
          "description": "The layout to use",
          "suggestions": [
            "post",
            "page",
            "draft"
          ]
        },
        {
          "name": "filename",
          "description": "The name of the post"
        }
      ]
    },
    {
      "name": "server",
      "description": "Start a local server. By default, this is at http://localhost:4000/",
      "options": [
        {
          "names": [
            "-i",
            "--ip"
          ],
          "description": "Override the default server IP. Bind to all IP address by default",
          "takes_arg": true,
          "arg": {
            "name": "ip",
            "description": "The IP address to bind to"
          }
        },
        {
          "names": [
            "-p",
            "--port"
          ],
          "description": "Override default port",
          "takes_arg": true,
          "arg": {
            "name": "port",
            "description": "Only serve static files"
          }
        },
        {
          "names": [
            "-s",
            "--static"
          ],
          "description": "Serve static files from the given directory"
        },
        {
          "names": [
            "-l",
            "--log"
          ],
          "description": "Enable logger. Override logger format",
          "takes_arg": true,
          "arg": {
            "name": "format",
            "description": "The morgan logger format. Can be predefined or customized",
            "suggestions": [
              "combined",
              "common",
              "tiny",
              "dev",
              "short"
            ]
          }
        },
        {
          "names": [
            "-o",
            "--open"
          ],
          "description": "Immediately open the server url in your default web browser"
        }
      ]
    },
    {
      "name": "deploy",
      "description": "Deploy your website",
      "options": [
        {
          "names": [
            "--setup"
          ],
          "description": "Setup without deployment"
        },
        {
          "names": [
            "-g",
            "--generate"
          ],
          "description": "Generate static files before deploying"
        }
      ]
    },
    {
      "name": "render",
      "description": "Render files with renderer plugins (e.g. Markdown) and save them at the specified path",
      "options": [
        {
          "names": [
            "--engine"
          ],
          "description": "Specify render engine"
        },
        {
          "names": [
            "-o",
            "--output"
          ],
          "description": "Output destination. Result will be printed in the terminal if the output destination is not set",
          "takes_arg": true,
          "arg": {
            "name": "output directory",
            "description": "The path to output directory",
            "template": "folders"
          }
        },
        {
          "names": [
            "--pretty"
          ],
          "description": "Prettify JSON output"
        }
      ],
      "args": [
        {
          "name": "file",
          "description": "The file to render",
          "is_variadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "migrate",
      "description": "Migrate content from other blog systems",
      "args": [
        {
          "name": "type",
          "description": "The type of migration. check https://hexo.io/docs/migration for more details"
        }
      ]
    },
    {
      "name": "clean",
      "description": "Clean the cache file (`db.json`) and generated files (`public`)"
    },
    {
      "name": "list",
      "description": "List all routes",
      "args": [
        {
          "name": "type",
          "description": "The type of routes to list",
          "suggestions": [
            "post",
            "route",
            "page",
            "tag",
            "category"
          ]
        }
      ]
    },
    {
      "name": "version",
      "description": "Display version information"
    }
  ],
  "options": [
    {
      "names": [
        "--config"
      ],
      "description": "Uses a custom config file (instead of `_config.yml`). Also accepts a comma-separated list (no spaces) of JSON or YAML config files that will combine the files into a single `_multiconfig.yml`",
      "takes_arg": true,
      "arg": {
        "name": "config file",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--safe"
      ],
      "description": "Disable loading plugins and scripts"
    },
    {
      "names": [
        "--debug"
      ],
      "description": "Log verbose messages to the terminal and to `debug.log`"
    },
    {
      "names": [
        "--silent"
      ],
      "description": "Silence output to the terminal"
    },
    {
      "names": [
        "--draft"
      ],
      "description": "Display draft posts (stored in the `source/_drafts` folder)"
    },
    {
      "names": [
        "--cwd"
      ],
      "description": "Customize the path of current working directory",
      "takes_arg": true,
      "arg": {
        "name": "directory",
        "template": "folders"
      }
    }
  ]
}
