use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum PackageSource {
#[serde(rename = "local")]
Local,
#[serde(rename = "registry")]
Registry(String),
#[serde(rename = "public")]
Public,
#[serde(rename = "all")]
All,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PackageScope {
pub source: Vec<PackageSource>,
}
impl PackageScope {
pub fn is_no_local(&self) -> bool {
if self.source.contains(&PackageSource::Public) {
return true;
}
for source in &self.source {
if let PackageSource::Registry(_some) = &source {
return true;
}
}
false
}
}
impl Default for PackageScope {
fn default() -> Self {
Self::from_source(PackageSource::All)
}
}
impl PackageScope {
pub fn from_registry(source: &str) -> Self {
Self::from_source(PackageSource::Registry(source.to_string()))
}
pub fn from_source(source: PackageSource) -> Self {
PackageScope {
source: vec![source],
}
}
}