From 28b475d19bd13890f851697ed461bc982fb0cb50 Mon Sep 17 00:00:00 2001 From: Ayrton Chilibeck Date: Fri, 12 Jan 2024 00:11:41 -0700 Subject: [PATCH 1/4] Added initial CLI arguments --- .gitignore | 1 + Cargo.lock | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/main.rs | 27 +++++++ 4 files changed, 245 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock index 22680e4..d3a1b8c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,222 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "anstream" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd2405b3ac1faab2990b74d728624cd9fd115651fcecc7c2d8daf01376275ba" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys", +] + +[[package]] +name = "clap" +version = "4.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58e54881c004cec7895b0068a0a954cd5d62da01aef83fa35b1e594497bf5445" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59cb82d7f531603d2fd1f507441cdd35184fa81beff7bd489570de7f773460bb" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "proc-macro2" +version = "1.0.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "tester" version = "0.1.0" +dependencies = [ + "clap", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" diff --git a/Cargo.toml b/Cargo.toml index 624a757..2a8cbec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,3 +6,4 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +clap = { version = "4.4.16", features = ["derive"] } diff --git a/src/main.rs b/src/main.rs index e7a11a9..879d348 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,30 @@ +use std::path::PathBuf; + +use clap::{Parser, Subcommand}; + +// Initialize CLI arguments using clap +#[derive(Parser)] +#[command(author, version, about, long_about = None)] +struct Cli { + /// Sets the verbosity of the tester + #[arg(short, long, action = clap::ArgAction::Count)] + verbosity: u8, + + /// Set the config file + config_file: PathBuf, + + #[command(subcommand)] + command: Commands, +} + +#[derive(Subcommand)] +enum Commands { + /// Validate test matching and config file validity + Validate, + Run, + Grade, +} + fn main() { println!("Hello, world!"); } -- 2.40.1 From bfd57f39a81420982da0caef27445486f58b9faf Mon Sep 17 00:00:00 2001 From: Ayrton Chilibeck Date: Fri, 12 Jan 2024 01:08:31 -0700 Subject: [PATCH 2/4] Added CLI arguments --- src/main.rs | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index 879d348..42172b3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,23 +8,56 @@ use clap::{Parser, Subcommand}; struct Cli { /// Sets the verbosity of the tester #[arg(short, long, action = clap::ArgAction::Count)] - verbosity: u8, + verbosity: Option, /// Set the config file + #[arg(short, long, value_name = "CONFIG")] config_file: PathBuf, + /// Set the grading config file + #[arg(short, long, value_name = "GRADING_CONFIG")] + grading_conf: Option, + #[command(subcommand)] - command: Commands, + command: Command, } #[derive(Subcommand)] -enum Commands { - /// Validate test matching and config file validity +enum Command { + /// Validate test matching and config file correctness Validate, + + /// Run all tests Run, + + /// Grade with grading config Grade, } fn main() { + let cli = Cli::parse(); + + let verbosity = get_verbosity(cli); + + println!("verbosity = {}", verbosity); + println!("Hello, world!"); } + +fn get_verbosity(cli: Cli) -> u8 { + // Check the user defined verbosity, if none, set to normal + let verbosity: u8; + match cli.verbosity { + Some(x) => verbosity = x, + None => verbosity = 1, + } + + match verbosity { + 0 => println!("Showing Result Summary 🫢"), + 1 => println!("Using Regular Verbosity 🤫"), + 2 => println!("Using Extreme Verbosity 🫨"), + _ => println!("Woah 🫠 ... didn't think we'd get this far, continuing with Extreme Verbosity"), + } + + return verbosity; +} -- 2.40.1 From 4ed6600ebc7cf18db2ef1c7b1ee70a80bc04c4c5 Mon Sep 17 00:00:00 2001 From: Ayrton Chilibeck Date: Fri, 12 Jan 2024 01:24:45 -0700 Subject: [PATCH 3/4] Moved main to top --- src/main.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main.rs b/src/main.rs index 42172b3..8f755ac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,16 @@ use std::path::PathBuf; use clap::{Parser, Subcommand}; +fn main() { + let cli = Cli::parse(); + + let verbosity = get_verbosity(cli); + + println!("verbosity = {}", verbosity); + + println!("Hello, world!"); +} + // Initialize CLI arguments using clap #[derive(Parser)] #[command(author, version, about, long_about = None)] @@ -34,16 +44,6 @@ enum Command { Grade, } -fn main() { - let cli = Cli::parse(); - - let verbosity = get_verbosity(cli); - - println!("verbosity = {}", verbosity); - - println!("Hello, world!"); -} - fn get_verbosity(cli: Cli) -> u8 { // Check the user defined verbosity, if none, set to normal let verbosity: u8; -- 2.40.1 From 735736807d455fdd9a1b47675cb8d2a274412268 Mon Sep 17 00:00:00 2001 From: Ayrton Chilibeck Date: Fri, 12 Jan 2024 12:35:24 -0700 Subject: [PATCH 4/4] Added runner stubs for running variations --- src/grade.rs | 5 +++++ src/main.rs | 20 ++++++++++++++------ src/run.rs | 5 +++++ src/validate.rs | 5 +++++ 4 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 src/grade.rs create mode 100644 src/run.rs create mode 100644 src/validate.rs diff --git a/src/grade.rs b/src/grade.rs new file mode 100644 index 0000000..fd55e01 --- /dev/null +++ b/src/grade.rs @@ -0,0 +1,5 @@ +use std::path::{Path, PathBuf}; + +pub fn grade(verbosity: u8, config_file: PathBuf, grade_config: Option<&Path>) { + println!("Grading!"); +} diff --git a/src/main.rs b/src/main.rs index 8f755ac..ffe15dd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,14 +2,22 @@ use std::path::PathBuf; use clap::{Parser, Subcommand}; +mod validate; +mod run; +mod grade; + fn main() { + // get cli args let cli = Cli::parse(); - let verbosity = get_verbosity(cli); + // parse the verbosity and eliminate the Option<> + let verbosity = get_verbosity(cli.verbosity); - println!("verbosity = {}", verbosity); - - println!("Hello, world!"); + match &cli.command { + Command::Validate => validate::validate(verbosity, cli.config_file), + Command::Run => run::run(verbosity, cli.config_file), + Command::Grade => grade::grade(verbosity, cli.config_file, cli.grading_conf.as_deref()), + } } // Initialize CLI arguments using clap @@ -44,10 +52,10 @@ enum Command { Grade, } -fn get_verbosity(cli: Cli) -> u8 { +fn get_verbosity(verb: Option) -> u8 { // Check the user defined verbosity, if none, set to normal let verbosity: u8; - match cli.verbosity { + match verb { Some(x) => verbosity = x, None => verbosity = 1, } diff --git a/src/run.rs b/src/run.rs new file mode 100644 index 0000000..1dcb660 --- /dev/null +++ b/src/run.rs @@ -0,0 +1,5 @@ +use std::path::PathBuf; + +pub fn run(verbosity: u8, config_file: PathBuf) { + println!("Running!"); +} diff --git a/src/validate.rs b/src/validate.rs new file mode 100644 index 0000000..2bb60d6 --- /dev/null +++ b/src/validate.rs @@ -0,0 +1,5 @@ +use std::path::PathBuf; + +pub fn validate(verbosity: u8, config_file: PathBuf) { + println!("Validating"); +} -- 2.40.1