kea-lifecycle 0.1.0

buildpack lifecycle
Documentation
use buildpack::executable::ExecutablePath;

pub mod args;
pub mod buildpack;
pub mod cmd;
pub mod error;

#[derive(Debug, Clone)]
pub enum ExecutableType {
    Unknown(String),
    Detector,
    Analyzer,
    Restorer,
    Builder,
    Exporter,
    Creator,
    Extender,
    Rebaster,
}

impl ExecutableType {
    pub fn from_executing_path() -> error::Result<Self> {
        let exec_path = ExecutablePath::from_execuing_path()?;
        Ok(Self::from_executable_name(&exec_path.executable_name()?))
    }

    pub fn from_executable_name(name: &str) -> Self {
        match name {
            "detector" => Self::Detector,
            "analyzer" => Self::Analyzer,
            "restorer" => Self::Restorer,
            "builder" => Self::Builder,
            "exporter" => Self::Exporter,
            "creator" => Self::Creator,
            "extender" => Self::Extender,
            "rebaser" => Self::Rebaster,
            unknown => Self::Unknown(unknown.to_string()),
        }
    }
}