Move the CLI to a module.
This commit is contained in:
parent
1b189cf15c
commit
a1f4600483
1
src/cli/mod.rs
Normal file
1
src/cli/mod.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
pub(crate) mod parameters;
|
47
src/cli/parameters.rs
Normal file
47
src/cli/parameters.rs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
use clap::Args;
|
||||||
|
use clap::Parser;
|
||||||
|
use clap::Subcommand;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
#[derive(Parser, Debug)]
|
||||||
|
#[command(name = "Writer")]
|
||||||
|
#[command(version = env!("CARGO_PKG_VERSION"))]
|
||||||
|
#[command(about = "Generate a static site.", long_about = None)]
|
||||||
|
#[command(propagate_version = true)]
|
||||||
|
pub(crate) struct Cli {
|
||||||
|
#[command(subcommand)]
|
||||||
|
pub(crate) command: Commands,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Subcommand, Debug)]
|
||||||
|
pub(crate) enum Commands {
|
||||||
|
/// Initialize an empty website folder.
|
||||||
|
Init(InitArgs),
|
||||||
|
|
||||||
|
/// Build the static site.
|
||||||
|
Build(BuildArgs),
|
||||||
|
|
||||||
|
/// Add a blog post to the site.
|
||||||
|
AddPost(BuildArgs),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Args, Debug)]
|
||||||
|
pub(crate) struct InitArgs {
|
||||||
|
/// Path where you want the initial writer structure to be located.
|
||||||
|
#[arg(short, long)]
|
||||||
|
pub(crate) path: PathBuf,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Args, Debug)]
|
||||||
|
pub(crate) struct BuildArgs {
|
||||||
|
/// Path to the writer config file.
|
||||||
|
#[arg(short, long)]
|
||||||
|
pub(crate) config: PathBuf,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Args, Debug)]
|
||||||
|
pub(crate) struct AddPostArgs {
|
||||||
|
/// Path to the writer config file.
|
||||||
|
#[arg(short, long)]
|
||||||
|
pub(crate) config: PathBuf,
|
||||||
|
}
|
53
src/main.rs
53
src/main.rs
@ -1,9 +1,11 @@
|
|||||||
use clap::Args;
|
|
||||||
use clap::Parser;
|
|
||||||
use clap::Subcommand;
|
|
||||||
use std::path::PathBuf;
|
|
||||||
use std::process::ExitCode;
|
use std::process::ExitCode;
|
||||||
|
|
||||||
|
use clap::Parser;
|
||||||
|
|
||||||
|
use self::cli::parameters::Cli;
|
||||||
|
use self::cli::parameters::Commands;
|
||||||
|
mod cli;
|
||||||
|
|
||||||
fn main() -> Result<ExitCode, Box<dyn std::error::Error>> {
|
fn main() -> Result<ExitCode, Box<dyn std::error::Error>> {
|
||||||
let rt = tokio::runtime::Runtime::new()?;
|
let rt = tokio::runtime::Runtime::new()?;
|
||||||
rt.block_on(async {
|
rt.block_on(async {
|
||||||
@ -21,46 +23,3 @@ async fn main_body() -> Result<ExitCode, Box<dyn std::error::Error>> {
|
|||||||
};
|
};
|
||||||
Ok(ExitCode::SUCCESS)
|
Ok(ExitCode::SUCCESS)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Parser, Debug)]
|
|
||||||
#[command(name = "Writer")]
|
|
||||||
#[command(version = env!("CARGO_PKG_VERSION"))]
|
|
||||||
#[command(about = "Generate a static site.", long_about = None)]
|
|
||||||
#[command(propagate_version = true)]
|
|
||||||
struct Cli {
|
|
||||||
#[command(subcommand)]
|
|
||||||
command: Commands,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Subcommand, Debug)]
|
|
||||||
enum Commands {
|
|
||||||
/// Initialize an empty website folder.
|
|
||||||
Init(InitArgs),
|
|
||||||
|
|
||||||
/// Build the static site.
|
|
||||||
Build(BuildArgs),
|
|
||||||
|
|
||||||
/// Add a blog post to the site.
|
|
||||||
AddPost(BuildArgs),
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Args, Debug)]
|
|
||||||
struct InitArgs {
|
|
||||||
/// Path where you want the initial writer structure to be located.
|
|
||||||
#[arg(short, long)]
|
|
||||||
path: PathBuf,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Args, Debug)]
|
|
||||||
struct BuildArgs {
|
|
||||||
/// Path to the writer config file.
|
|
||||||
#[arg(short, long)]
|
|
||||||
config: PathBuf,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Args, Debug)]
|
|
||||||
struct AddPostArgs {
|
|
||||||
/// Path to the writer config file.
|
|
||||||
#[arg(short, long)]
|
|
||||||
config: PathBuf,
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user