Add run boilerplate

This commit is contained in:
SkyfallWasTaken 2024-07-09 20:45:06 +01:00
parent f9d384d350
commit c20ee0e575
5 changed files with 17 additions and 27 deletions

11
Cargo.lock generated
View file

@ -186,7 +186,7 @@ dependencies = [
"eyre", "eyre",
"indenter", "indenter",
"once_cell", "once_cell",
"owo-colors", "owo-colors 3.5.0",
"tracing-error", "tracing-error",
] ]
@ -197,7 +197,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2"
dependencies = [ dependencies = [
"once_cell", "once_cell",
"owo-colors", "owo-colors 3.5.0",
"tracing-core", "tracing-core",
"tracing-error", "tracing-error",
] ]
@ -230,6 +230,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"clap", "clap",
"color-eyre", "color-eyre",
"owo-colors 4.0.0",
"reqwest", "reqwest",
"tokio", "tokio",
] ]
@ -712,6 +713,12 @@ version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f"
[[package]]
name = "owo-colors"
version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "caff54706df99d2a78a5a4e3455ff45448d81ef1bb63c22cd14052ca0e993a3f"
[[package]] [[package]]
name = "percent-encoding" name = "percent-encoding"
version = "2.3.1" version = "2.3.1"

View file

@ -6,5 +6,6 @@ edition = "2021"
[dependencies] [dependencies]
clap = { version = "4.5.9", features = ["derive"] } clap = { version = "4.5.9", features = ["derive"] }
color-eyre = "0.6.3" color-eyre = "0.6.3"
owo-colors = "4.0.0"
reqwest = "0.12.5" reqwest = "0.12.5"
tokio = { version = "1.38.0", features = ["macros", "rt-multi-thread"] } tokio = { version = "1.38.0", features = ["macros", "rt-multi-thread"] }

View file

@ -6,28 +6,14 @@ pub mod run;
#[command(version, about, long_about = None)] #[command(version, about, long_about = None)]
pub struct Cli { pub struct Cli {
#[command(subcommand)] #[command(subcommand)]
pub command: Commands, pub command: Command,
} }
#[derive(Subcommand)] #[derive(Subcommand)]
pub enum Commands { pub enum Command {
/// Run a script in package.json /// Run a script in package.json
Run { Run {
/// The name of the script to run /// The name of the script to run
script_name: Option<String>, script_name: Option<String>,
}, },
} }
pub(crate) trait Command {
async fn run(command: &Commands);
}
impl Command for Commands {
async fn run(&self) {
match self {
Commands::Run { .. } => {
run::Run::run(self).await;
}
}
}
}

View file

@ -1,8 +1,3 @@
use super::{Command, Commands}; use super::Command;
pub struct Run; pub async fn run(script_name: Option<String>) {}
impl Command for Run {
async fn run(command: &Commands) {
}
}

View file

@ -6,6 +6,7 @@ use command::{Cli, Command};
#[tokio::main] #[tokio::main]
async fn main() { async fn main() {
let cli = Cli::parse(); let cli = Cli::parse();
cli.command.run().await; match cli.command {
println!("Hello, world!"); Command::Run { script_name } => command::run::run(script_name).await,
}
} }