use std::str::FromStr;
use crate::error::Error;
#[derive(Clone, Debug, PartialEq)]
pub enum ProgramType {
JsonEunomia,
WasmModule,
Tar,
}
impl TryFrom<&str> for ProgramType {
type Error = Error;
fn try_from(path: &str) -> Result<Self, Self::Error> {
match path.split('.').last().unwrap() {
"json" => Ok(ProgramType::JsonEunomia),
"wasm" => Ok(ProgramType::WasmModule),
"tar" => Ok(ProgramType::Tar),
_ => Err(Error::UnknownSuffix(format!(
"{} suffix incorrect, must end with .json, .wasm or .tar",
path
))),
}
}
}
impl FromStr for ProgramType {
type Err = Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"JsonEunomia" => Ok(ProgramType::JsonEunomia),
"Tar" => Ok(ProgramType::Tar),
"WasmModule" => Ok(ProgramType::WasmModule),
&_ => Err(Error::Other("fail parse program type str".to_string())),
}
}
}