addonscript-rs/crates/model/src/enums.rs

65 lines
1.4 KiB
Rust
Raw Normal View History

2022-11-28 10:26:47 +01:00
use serde::{Deserialize, Serialize};
2022-12-28 22:12:58 +01:00
use serde_enum_str::{Deserialize_enum_str, Serialize_enum_str};
2022-11-28 10:26:47 +01:00
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "lowercase")]
pub enum Flag {
Required,
Optional,
Included,
Incompatible,
Launch,
2022-11-28 11:06:15 +01:00
Env,
2023-04-21 20:59:52 +02:00
Expected,
2023-09-01 12:08:45 +02:00
Patch,
2022-11-28 10:26:47 +01:00
}
2022-12-28 22:12:58 +01:00
#[derive(Debug, Deserialize_enum_str, Serialize_enum_str, PartialEq, Eq, Hash)]
2022-11-28 10:26:47 +01:00
#[serde(rename_all = "lowercase")]
pub enum InstallAction {
Move,
Extract,
Rename,
Inject,
2023-09-01 12:08:45 +02:00
Library,
2022-12-28 22:12:58 +01:00
#[serde(other)]
2022-11-28 10:26:47 +01:00
Unknown(String),
2022-11-28 11:06:15 +01:00
}
2022-12-28 22:12:58 +01:00
#[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),
2023-02-03 21:50:25 +01:00
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Hash, Default)]
#[serde(rename_all = "lowercase")]
pub enum Side {
Client,
Server,
#[default]
Both,
2023-09-01 12:08:45 +02:00
}
#[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,
}
}
2022-12-28 22:12:58 +01:00
}