use serde::{Deserialize, Serialize};
use serde_with::serde_as;
use std::path::{Path, PathBuf};
use url::Url;
#[serde_as]
#[derive(Debug, Clone, PartialEq, Serialize, Eq, Deserialize, Default)]
#[serde(rename_all = "kebab-case", deny_unknown_fields)]
pub struct PypiIndexes {
pub indexes: Vec<Url>,
#[serde(
default,
skip_serializing_if = "Vec::is_empty",
with = "serde_yaml::with::singleton_map_recursive"
)]
pub find_links: Vec<FindLinksUrlOrPath>,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq, Hash)]
#[serde(rename_all = "kebab-case", deny_unknown_fields)]
pub enum FindLinksUrlOrPath {
Path(PathBuf),
Url(Url),
}
impl FindLinksUrlOrPath {
pub fn as_url(&self) -> Option<&Url> {
match self {
Self::Path(_) => None,
Self::Url(url) => Some(url),
}
}
pub fn as_path(&self) -> Option<&Path> {
match self {
Self::Path(path) => Some(path),
Self::Url(_) => None,
}
}
}