cli/command/
return_code.rs1use crate::{cli::SubCommand, command::CommandError, job::Job, parse_hex_u32};
6use clap::Args;
7use tpm2_protocol::data::TpmRc;
8
9fn parse_rc(rc_str: &str) -> Result<TpmRc, String> {
10 let rc_u32 = parse_hex_u32(rc_str).map_err(|_| "malformed value".to_string())?;
11 TpmRc::try_from(rc_u32).map_err(|_| "unknown discriminant".to_string())
12}
13
14#[derive(Args, Debug)]
16pub struct ReturnCode {
17 #[arg(value_parser = parse_rc)]
19 pub rc: TpmRc,
20}
21
22impl SubCommand for ReturnCode {
23 fn run(&self, job: &mut Job) -> Result<(), CommandError> {
24 writeln!(job.writer, "{}", self.rc)?;
25 Ok(())
26 }
27
28 fn is_local(&self) -> bool {
29 true
30 }
31}