use thiserror::Error;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ServerFrontend {
Xet,
Lfs,
BazelHttp,
Oci,
Hub,
Metrics,
}
impl ServerFrontend {
pub fn parse(value: &str) -> Result<Self, ServerFrontendParseError> {
match value {
"xet" => Ok(Self::Xet),
"lfs" => Ok(Self::Lfs),
"bazel-http" => Ok(Self::BazelHttp),
"oci" => Ok(Self::Oci),
"hub" => Ok(Self::Hub),
"metrics" => Ok(Self::Metrics),
_ => Err(ServerFrontendParseError),
}
}
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::Xet => "xet",
Self::Lfs => "lfs",
Self::BazelHttp => "bazel-http",
Self::Oci => "oci",
Self::Hub => "hub",
Self::Metrics => "metrics",
}
}
}
#[derive(Debug, Clone, Copy, Error, PartialEq, Eq)]
#[error("invalid server frontend")]
pub struct ServerFrontendParseError;