use anyhow::{Context, Result};
use clap::Parser;
use std::process::ExitCode;
use hwlib::models::request_validators::{CertificationStatusRequest, Paths};
use hwlib::send_certification_status_request;
#[derive(Parser, Debug)]
#[command(version, about, long_about, verbatim_doc_comment)]
struct Args {
#[arg(
long = "server",
env = "HW_API_URL",
default_value = "https://hw.ubuntu.com",
help = "API server URL"
)]
hw_api_url: String,
}
fn main() -> ExitCode {
let args = Args::parse();
match run(args.hw_api_url) {
Ok(_) => ExitCode::SUCCESS,
Err(e) => {
eprintln!("ERROR: {e:?}");
ExitCode::FAILURE
}
}
}
fn run(server_url: String) -> Result<()> {
let cert_status_request =
CertificationStatusRequest::new(Paths::default()).context("cannot collect system data")?;
let response = send_certification_status_request(server_url, &cert_status_request)
.context("cannot send certification status request")?;
let response_json =
serde_json::to_string_pretty(&response).context("cannot serialize response as JSON")?;
println!("{response_json}");
Ok(())
}