diff --git a/Cargo.lock b/Cargo.lock index 5b6c4a5..a342345 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -242,9 +242,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.5.4" +version = "4.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "a9689a29b593160de5bc4aacab7b5d54fb52231de70122626c178e6a368994c7" dependencies = [ "clap_builder", "clap_derive", @@ -252,9 +252,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "2e5387378c84f6faa26890ebf9f0a92989f8873d4d380467bcd0d8d8620424df" dependencies = [ "anstream", "anstyle", @@ -264,9 +264,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" dependencies = [ "heck", "proc-macro2", @@ -333,6 +333,7 @@ name = "crosec" version = "0.1.0" dependencies = [ "bytemuck", + "clap", "nix", "num", "num-derive", diff --git a/crosec/Cargo.toml b/crosec/Cargo.toml index 8db8bdd..a832b8e 100644 --- a/crosec/Cargo.toml +++ b/crosec/Cargo.toml @@ -7,6 +7,7 @@ edition = "2021" [dependencies] bytemuck = { version = "1.16.0", features = ["derive"] } +clap = { version = "4.5.6", optional = true } nix = { version = "0.27.1", features = ["ioctl"] } num = "0.4.3" num-derive = "0.4.2" @@ -14,3 +15,6 @@ num-traits = "0.2.18" strum = "0.26.2" strum_macros = "0.26.4" thiserror = "1.0.57" + +[features] +clap = ["dep:clap"] diff --git a/crosec/src/commands/fp_mode.rs b/crosec/src/commands/fp_mode.rs index bfe2faa..fc9980e 100644 --- a/crosec/src/commands/fp_mode.rs +++ b/crosec/src/commands/fp_mode.rs @@ -9,6 +9,7 @@ use super::CrosEcCmd; /// Note that with the ChromiumOS ectool, to start enrolling, as well as continue the next step in enrolling, you do `ectool --name=cros_fp fpmode enroll`. The equivalent of this is to do `ectool fp-mode EnrollImage EnrollSession`. #[derive(EnumString, EnumIter, IntoStaticStr, Clone, Copy)] +#[cfg_attr(feature = "clap", derive(clap::ValueEnum))] #[repr(u32)] pub enum FpMode { Reset = 0b00000000000000000000000000000000, diff --git a/ectool/Cargo.toml b/ectool/Cargo.toml index e7a1be1..8d8e4fa 100644 --- a/ectool/Cargo.toml +++ b/ectool/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -crosec = { version = "0.1.0", path = "../crosec" } +crosec = { version = "0.1.0", path = "../crosec", features = ["clap"] } color-eyre = "0.6.2" clap = { version = "4.5.4", features = ["derive"] } num-traits = "0.2.19" diff --git a/ectool/src/main.rs b/ectool/src/main.rs index 6378ff6..b7e525f 100644 --- a/ectool/src/main.rs +++ b/ectool/src/main.rs @@ -102,7 +102,7 @@ enum Commands { seed: String, }, FpMode { - mode: Vec, + mode: Vec, }, WaitEvent { event_type: String, @@ -252,7 +252,7 @@ fn main() -> Result<()> { let mode = if mode.len() > 0 { let mut mode_number: u32 = 0; for mode in mode { - mode_number |= FpMode::from_str(&mode)? as u32; + mode_number |= mode as u32; } mode_number } else {