use std::path::{Path, PathBuf};
pub const KERNEL_PATTERN: &str = "linux-";
pub const LINUX_SYMLINK: &str = "linux";
pub const CONFIG_FILENAME: &str = ".config";
pub const KERNEL_IMAGE_PATH: &str = "arch/x86/boot/bzImage";
pub const MAKE_COMMAND: &str = "make";
pub const DEFAULT_LOG_LEVEL: &str = "info";
#[cfg(feature = "dracut")]
pub const DRACUT_COMMAND: &str = "dracut";
#[derive(Clone, Debug)]
pub struct KernelPaths {
pub kernel_image: PathBuf,
pub initramfs: Option<PathBuf>,
pub kernel_config: PathBuf,
pub kernel_src: PathBuf,
pub linux_symlink: PathBuf,
}
impl KernelPaths {
#[must_use]
pub fn new(
kernel_file_path: PathBuf,
initramfs_file_path: Option<PathBuf>,
kernel_config_file_path: PathBuf,
kernel_src: PathBuf,
) -> Self {
Self {
kernel_image: kernel_file_path,
initramfs: initramfs_file_path,
kernel_config: kernel_config_file_path,
kernel_src: kernel_src.clone(),
linux_symlink: kernel_src.join(LINUX_SYMLINK),
}
}
#[must_use]
pub fn backup_path(&self, original: &Path, suffix: &str) -> PathBuf {
let filename = original.file_name().map_or_else(
|| suffix.to_string(),
|n: &std::ffi::OsStr| format!("{}{}", n.to_string_lossy(), suffix),
);
original.with_file_name(filename)
}
}