use clap::ValueEnum;
use serde::{Deserialize, Serialize};
use std::fmt;
use std::str::FromStr;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, ValueEnum)]
pub enum Filetype {
AppImage,
Archive,
Compressed,
Binary,
WinExe,
Checksum,
Auto, }
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ValueEnum)]
pub enum Channel {
Stable,
Beta,
Nightly,
All,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum Provider {
Github,
}
impl FromStr for Provider {
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s.to_lowercase().as_str() {
"github" => Ok(Provider::Github),
_ => Err(format!("Unknown provider: {}", s)),
}
}
}
impl fmt::Display for Channel {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Channel::Stable => write!(f, "Stable"),
Channel::Beta => write!(f, "Beta"),
Channel::Nightly => write!(f, "Nightly"),
Channel::All => write!(f, "All"),
}
}
}
impl fmt::Display for Provider {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Provider::Github => write!(f, "Github"),
}
}
}