use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::{NativeId, Repository};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "kebab-case")]
pub enum Visibility {
Public,
Private,
Unknown,
}
impl Visibility {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::Public => "public",
Self::Private => "private",
Self::Unknown => "unknown",
}
}
}
impl std::fmt::Display for Visibility {
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
formatter.write_str(self.as_str())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum WriteTarget<'a> {
New {
repositories: &'a [Repository],
project: Option<&'a NativeId>,
},
Existing(&'a NativeId),
}