ecli_lib/config/
mod.rs

1//!  SPDX-License-Identifier: MIT
2//!
3//! Copyright (c) 2023, eunomia-bpf
4//! All rights reserved.
5//!
6use std::str::FromStr;
7
8use crate::error::Error;
9/// Re-export export format type from bpf-loader-lib
10
11/// The ProgramType
12#[derive(Clone, Debug, PartialEq)]
13pub enum ProgramType {
14    /// JSON-described bpf program
15    JsonEunomia,
16    /// A Wasm module which can be used for wasm-bpf
17    WasmModule,
18    /// A tar archive
19    Tar,
20}
21
22impl TryFrom<&str> for ProgramType {
23    type Error = Error;
24
25    fn try_from(path: &str) -> Result<Self, Self::Error> {
26        match path.split('.').last().unwrap() {
27            "json" => Ok(ProgramType::JsonEunomia),
28            "wasm" => Ok(ProgramType::WasmModule),
29            "tar" => Ok(ProgramType::Tar),
30            _ => Err(Error::UnknownSuffix(format!(
31                "{} suffix incorrect, must end with .json, .wasm or .tar",
32                path
33            ))),
34        }
35    }
36}
37
38impl FromStr for ProgramType {
39    type Err = Error;
40
41    fn from_str(s: &str) -> Result<Self, Self::Err> {
42        match s {
43            "JsonEunomia" => Ok(ProgramType::JsonEunomia),
44            "Tar" => Ok(ProgramType::Tar),
45            "WasmModule" => Ok(ProgramType::WasmModule),
46            &_ => Err(Error::Other("fail parse program type str".to_string())),
47        }
48    }
49}