kea_lifecycle/
lib.rs

1use buildpack::executable::ExecutablePath;
2
3pub mod args;
4pub mod buildpack;
5pub mod cmd;
6pub mod error;
7
8#[derive(Debug, Clone)]
9pub enum ExecutableType {
10    Unknown(String),
11    Detector,
12    Analyzer,
13    Restorer,
14    Builder,
15    Exporter,
16    Creator,
17    Extender,
18    Rebaster,
19}
20
21impl ExecutableType {
22    pub fn from_executing_path() -> error::Result<Self> {
23        let exec_path = ExecutablePath::from_execuing_path()?;
24        Ok(Self::from_executable_name(&exec_path.executable_name()?))
25    }
26
27    pub fn from_executable_name(name: &str) -> Self {
28        match name {
29            "detector" => Self::Detector,
30            "analyzer" => Self::Analyzer,
31            "restorer" => Self::Restorer,
32            "builder" => Self::Builder,
33            "exporter" => Self::Exporter,
34            "creator" => Self::Creator,
35            "extender" => Self::Extender,
36            "rebaser" => Self::Rebaster,
37            unknown => Self::Unknown(unknown.to_string()),
38        }
39    }
40}