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}