use anyhow::Result;
use clap::{Parser, Subcommand};
use std::net::IpAddr;
use std::path::PathBuf;
#[derive(Parser)]
#[command(name = "italic", about = "A zero-config static site generator")]
struct Cli {
#[command(subcommand)]
command: Command,
}
#[derive(Subcommand)]
enum Command {
Build {
#[arg(long)]
drafts: bool,
},
Watch,
Serve {
#[arg(long, default_value_t = 3000)]
port: u16,
#[arg(long, default_value = "127.0.0.1")]
host: IpAddr,
},
New {
path: PathBuf,
},
Scaffold,
Clean,
}
fn main() -> Result<()> {
let cli = Cli::parse();
match cli.command {
Command::Build { drafts } => italic::build(drafts),
Command::Watch => italic::watch(),
Command::Serve { port, host } => italic::serve(host, port),
Command::New { path } => italic::new(&path),
Command::Scaffold => italic::scaffold(),
Command::Clean => italic::clean(),
}
}