#[derive(Debug)]
pub struct Args {
pub no_build: bool,
#[cfg(feature = "dracut")]
pub no_initramfs: bool,
pub no_modules: bool,
pub menuconfig: bool,
}
impl Args {
const HELP: &str = r#"
Kernel Builder
USAGE:
kernel-builder [OPTIONS]
FLAGS:
-h, --help Prints help information
-v, --version Print version
OPTIONS:
--no-build skip build
--no-initramfs skip generating initramfs (only if compiled with dracut feature)
--no-modules skip installing kernel modules
--menuconfig open menuconfig for kernel configuration
"#;
#[must_use]
pub fn parse_args() -> Self {
let mut pargs = pico_args::Arguments::from_env();
if pargs.contains(["-h", "--help"]) {
print!("{}", Self::HELP);
std::process::exit(0);
}
if pargs.contains(["-v", "--version"]) {
println!(
"kernel-builder v{}",
std::env::var("CARGO_PKG_VERSION").expect("missing package version")
);
std::process::exit(0);
}
Self {
no_build: pargs.contains("--no-build"),
#[cfg(feature = "dracut")]
no_initramfs: pargs.contains("--no-initramfs"),
no_modules: pargs.contains("--no-modules"),
menuconfig: pargs.contains("--menuconfig"),
}
}
}