#![allow(clippy::unnecessary_wraps)]
use clap::Parser;
#[cfg(target_arch = "s390x")]
use libcoreinst::s390x;
#[derive(Debug, Parser)]
#[command(name = "rdcore", version)]
#[command(args_conflicts_with_subcommands = true)]
#[command(disable_help_subcommand = true)]
#[command(help_expected = true)]
pub enum Cmd {
Rootmap(RootmapConfig),
BindBoot(BindBootConfig),
Kargs(KargsConfig),
StreamHash(StreamHashConfig),
VerifyUniqueFsLabel(VerifyUniqueFsLabelConfig),
#[cfg(target_arch = "s390x")]
Zipl(ZiplConfig),
}
#[derive(Debug, Parser)]
pub struct RootmapConfig {
#[arg(long, value_name = "DEVPATH", conflicts_with = "boot_mount")]
pub boot_device: Option<String>,
#[arg(long, value_name = "BOOT_MOUNT", conflicts_with = "boot_device")]
pub boot_mount: Option<String>,
#[arg(value_name = "ROOT_MOUNT")]
pub root_mount: String,
}
#[derive(Debug, Parser)]
pub struct BindBootConfig {
#[arg(value_name = "ROOT_MOUNT")]
pub root_mount: String,
#[arg(value_name = "BOOT_MOUNT")]
pub boot_mount: String,
}
#[derive(Debug, Parser)]
pub struct KargsConfig {
#[arg(long, value_name = "DEVPATH")]
#[arg(conflicts_with_all = ["boot_mount", "current"])]
pub boot_device: Option<String>,
#[arg(long, value_name = "BOOT_MOUNT")]
#[arg(conflicts_with_all = ["boot_device", "current"])]
pub boot_mount: Option<String>,
#[arg(long)]
#[arg(conflicts_with_all = ["boot_device", "boot_mount"])]
pub current: bool,
#[arg(long, value_name = "OPTIONS", hide = true)]
pub override_options: Option<String>,
#[arg(long, value_name = "PATH")]
pub create_if_changed: Option<String>,
#[arg(long, value_name = "ARG")]
pub append: Vec<String>,
#[arg(long, value_name = "ARG")]
#[arg(alias = "should-exist")]
pub append_if_missing: Vec<String>,
#[arg(long, value_name = "ARG")]
#[arg(alias = "should-not-exist")]
pub delete: Vec<String>,
}
#[derive(Debug, Parser)]
pub struct StreamHashConfig {
#[arg(value_name = "hash-file")]
pub hash_file: String,
}
#[derive(Debug, Parser)]
pub struct VerifyUniqueFsLabelConfig {
#[arg(value_name = "LABEL")]
pub label: String,
#[arg(long)]
pub rereadpt: bool,
}
#[cfg(target_arch = "s390x")]
#[derive(Debug, Parser)]
pub struct ZiplConfig {
#[arg(long, value_name = "BOOT_MOUNT")]
pub boot_mount: String,
#[arg(long, value_enum, default_value = "auto")]
pub secex_mode: s390x::ZiplSecexMode,
#[arg(long, value_name = "HOSTKEY")]
pub hostkey: Option<String>,
#[arg(long, value_name = "KARG")]
#[arg(alias = "kargs")]
pub append_karg: Option<Vec<String>>,
#[arg(long, value_name = "FILE")]
pub append_file: Option<Vec<String>>,
}
#[cfg(test)]
mod test {
use super::*;
use clap::CommandFactory;
#[test]
fn clap_app() {
Cmd::command().debug_assert()
}
}