kernel-builder 0.7.6

Select, build and install kernel version from local sources.
Documentation
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)
    }
}