65 lines
1.4 KiB
Rust
65 lines
1.4 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
use serde_enum_str::{Deserialize_enum_str, Serialize_enum_str};
|
|
|
|
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum Flag {
|
|
Required,
|
|
Optional,
|
|
Included,
|
|
Incompatible,
|
|
Launch,
|
|
Env,
|
|
Expected,
|
|
Patch,
|
|
}
|
|
|
|
#[derive(Debug, Deserialize_enum_str, Serialize_enum_str, PartialEq, Eq, Hash)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum InstallAction {
|
|
Move,
|
|
Extract,
|
|
Rename,
|
|
Inject,
|
|
Library,
|
|
#[serde(other)]
|
|
Unknown(String),
|
|
}
|
|
|
|
#[derive(Debug, Deserialize_enum_str, Serialize_enum_str, PartialEq, Eq, Hash)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum APIFeature {
|
|
Addons,
|
|
Files,
|
|
Env,
|
|
#[serde(other)]
|
|
Unofficial(String),
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Hash, Default)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum Side {
|
|
Client,
|
|
Server,
|
|
#[default]
|
|
Both,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum ArgumentMode {
|
|
Replace,
|
|
Append,
|
|
Expand,
|
|
Override,
|
|
}
|
|
|
|
impl Side {
|
|
pub fn compatbile_with(&self, other: &Self) -> bool {
|
|
match self {
|
|
Side::Client => other == &Self::Client || other == &Self::Both,
|
|
Side::Server => other == &Self::Server || other == &Self::Both,
|
|
Side::Both => true,
|
|
}
|
|
}
|
|
} |