zola/src/cli.rs

103 lines
4.6 KiB
Rust
Raw Normal View History

2019-12-21 21:52:39 +00:00
use clap::{crate_authors, crate_description, crate_version, App, AppSettings, Arg, SubCommand};
2017-07-15 04:24:31 +00:00
pub fn build_cli() -> App<'static, 'static> {
App::new("zola")
2017-10-16 20:48:59 +00:00
.version(crate_version!())
.author(crate_authors!())
.about(crate_description!())
.setting(AppSettings::SubcommandRequiredElseHelp)
.arg(
Arg::with_name("root")
.short("r")
.long("root")
.takes_value(true)
.default_value(".")
.help("Directory to use as root of project")
)
2017-10-16 20:48:59 +00:00
.arg(
Arg::with_name("config")
.short("c")
.long("config")
2018-03-16 18:11:08 +00:00
.takes_value(true)
.help("Path to a config file other than config.toml in the root of project")
2017-07-15 04:24:31 +00:00
)
2017-10-16 20:48:59 +00:00
.subcommands(vec![
SubCommand::with_name("init")
.about("Create a new Zola project")
.args(&[
2017-10-16 20:48:59 +00:00
Arg::with_name("name")
.default_value(".")
.help("Name of the project. Will create a new directory with that name in the current directory"),
Arg::with_name("force")
.short("f")
.long("force")
.takes_value(false)
.help("Force creation of project even if directory is non-empty")
]),
2017-10-16 20:48:59 +00:00
SubCommand::with_name("build")
2019-01-05 10:04:12 +00:00
.about("Deletes the output directory if there is one and builds the site")
2017-10-16 20:48:59 +00:00
.args(&[
Arg::with_name("base_url")
.short("u")
.long("base-url")
.takes_value(true)
2017-10-16 20:48:59 +00:00
.help("Force the base URL to be that value (default to the one in config.toml)"),
Arg::with_name("output_dir")
.short("o")
.long("output-dir")
.takes_value(true)
.help("Outputs the generated site in the given path (by default 'public' dir in project root)"),
2019-08-24 20:23:08 +00:00
Arg::with_name("drafts")
.long("drafts")
.takes_value(false)
.help("Include drafts when loading the site"),
2017-10-16 20:48:59 +00:00
]),
SubCommand::with_name("serve")
.about("Serve the site. Rebuild and reload on change automatically")
.args(&[
Arg::with_name("interface")
.short("i")
.long("interface")
.takes_value(true)
.help("Interface to bind on (default: 127.0.0.1)"),
2017-10-16 20:48:59 +00:00
Arg::with_name("port")
.short("p")
.long("port")
.takes_value(true)
.help("Which port to use (default: 1111)"),
Arg::with_name("output_dir")
.short("o")
.long("output-dir")
.takes_value(true)
.help("Outputs assets of the generated site in the given path (by default 'public' dir in project root). HTML/XML will be stored in memory."),
Arg::with_name("base_url")
.short("u")
.long("base-url")
.takes_value(true)
.help("Changes the base_url (default: 127.0.0.1)"),
2019-08-24 20:23:08 +00:00
Arg::with_name("drafts")
.long("drafts")
.takes_value(false)
.help("Include drafts when loading the site"),
Arg::with_name("open")
.short("O")
.long("open")
.takes_value(false)
.help("Open site in the default browser"),
Arg::with_name("fast")
.short("f")
.long("fast")
.takes_value(false)
.help("Only rebuild the minimum on change - useful when working on a specific page/section"),
2017-10-16 20:48:59 +00:00
]),
SubCommand::with_name("check")
.about("Try building the project without rendering it. Checks links")
2019-08-24 20:23:08 +00:00
.args(&[
Arg::with_name("drafts")
.long("drafts")
.takes_value(false)
.help("Include drafts when loading the site"),
])
2017-10-16 20:48:59 +00:00
])
2017-07-15 04:24:31 +00:00
}