Files
s390-tools/rust/pvimg/src/main.rs
T
Marc Hartmayer f8fb9ce32a rust: Run rustfmt with some experimental options
+ Sort and group the imports
+ Normalize and format comments (100 characters width)

Command used:

$ cargo +nightly fmt --

Acked-by: Steffen Eiden <seiden@linux.ibm.com>
Signed-off-by: Marc Hartmayer <marc@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
2026-06-22 16:43:02 +02:00

73 lines
2.0 KiB
Rust

// SPDX-License-Identifier: MIT
//
// Copyright IBM Corp. 2024
//! # pvimg
//!
//! `pvimg` is a command line utility to create and inspect IBM Secure
//! Execution boot images.
//!
//! Use `pvimg` to create a IBM Secure Execution boot image file, which can
//! be loaded using `zipl` or `QEMU`. The tool can also be used to inspect
//! existing Secure Execution boot images.
mod cli;
mod cmd;
mod se_img;
mod se_img_comps;
use std::env;
use std::process::ExitCode;
use clap::{Command, CommandFactory, Parser};
use cli::{validate_cli, CliOptions, SubCommands};
use log::trace;
use pvimg::error::OwnExitCode;
use utils::{print_cli_error, print_error, PvLogger};
use crate::cli::GenprotimgCliOptions;
static LOGGER: PvLogger = PvLogger;
fn main() -> ExitCode {
let exe = env::args_os().next().unwrap();
let (opts, cmd): (CliOptions, Command) = match exe.to_str() {
// Test if the symlink executable 'genprotimg' was used. If so use the
// `pvimg create` command directly.
Some(val) if val.ends_with("genprotimg") => (
GenprotimgCliOptions::own_parse(),
GenprotimgCliOptions::command(),
),
_ => (CliOptions::parse(), CliOptions::command()),
};
let verbosity = opts.verbose.to_level_filter();
if let Err(e) = LOGGER.start(verbosity) {
unreachable!("Logger error: {e:?}");
}
match validate_cli(&opts) {
Ok(opts) => opts,
Err(e) => {
let _ = print_cli_error(e, cmd);
return OwnExitCode::UsageError.into();
}
};
// NOTE trace verbosity is disabled in release builds
trace!("Trace verbosity, may leak secrets to command-line");
trace!("Options {opts:?}");
let res = match &opts.cmd {
SubCommands::Create(opt) => cmd::create(opt),
SubCommands::Info(opt) => cmd::info(opt),
SubCommands::Test(opt) => cmd::test(opt),
SubCommands::Version => cmd::version(verbosity),
};
match res {
Ok(own_exit_code) => own_exit_code.into(),
Err(e) => print_error(&e, verbosity),
}
}