use std::path::PathBuf; #[derive(StructOpt, Debug, Clone)] #[structopt(name = "Teasca.de Generator", about = "A website generator, used mainly for generating teasca.de")] pub struct Opt { /// Verbose flag, makes the program more noisy. (-vv for maximum noisiness) #[structopt(short = "v", long = "verbose", parse(from_occurrences))] pub verbose: u8, /// Quiet flag, makes the program less noisy. (-qqq for minimum noisiness) #[structopt(short = "q", long = "quiet", parse(from_occurrences))] pub quiet: u8, /// Overwrites necessary files to create new ones. #[structopt(short = "o", long = "overwrite")] pub overwrite: bool, #[structopt(subcommand)] pub cmd: Subcommands, } #[derive(StructOpt, Debug, Clone)] pub enum Subcommands { /// Build the website #[structopt(name = "build")] Build(BuildOpt), /// Create a new page #[structopt(name = "new")] New(NewOpt), /// Initializes a config.toml #[structopt(name = "init")] Initialize(InitializeOpt), } #[derive(StructOpt, Debug, Clone)] pub struct BuildOpt {} #[derive(StructOpt, Debug, Clone)] pub struct NewOpt { /// File path for the .toml file created #[structopt(parse(from_os_str))] pub toml_path: PathBuf, /// File path for the markdown file created #[structopt(short = "m", long = "markdown", parse(from_os_str))] pub markdown_path: Option, /// Outpuh html file path of the generated page #[structopt(short = "h", long = "html", parse(from_os_str))] pub html_path: Option, /// Sets the title of the generated page #[structopt(short = "t", long = "title")] pub title: Option, /// Don't modify config.toml automatically #[structopt(short = "n", long = "no-modify-config")] pub no_modify_config: bool, } #[derive(StructOpt, Debug, Clone)] pub struct InitializeOpt { /// Name of the webpage #[structopt()] pub name: String, /// Favicon #[structopt(short = "f", long = "favicon")] pub favicon: Option, /// Twitter author #[structopt(short = "t", long = "twitter")] pub twitter_author: Option, /// Disables the default navbar #[structopt(short = "n", long = "no-navbar")] pub no_default_navbar: bool, }