orbiter 0.9.0

A cross-shell plugin and package manager
Documentation
use super::config::Payload;

pub fn get_listing(
    payloads: &[Payload],
    scope: &ListingScope,
) -> Result<Vec<String>, Box<dyn std::error::Error>> {
    Ok(match scope {
        ListingScope::Effective => payloads.iter().map(|p| p.id.to_owned()).collect(),
        ListingScope::All => payloads.iter().map(|p| p.id.to_owned()).collect(),
    })
}

#[derive(Debug)]
pub enum ListingScope {
    Effective,
    All,
}

impl From<&Option<String>> for ListingScope {
    fn from(s: &Option<String>) -> Self {
        if let Some(s) = s {
            match s.to_lowercase().as_str() {
                "effective" => ListingScope::Effective,
                "all" => ListingScope::All,
                _ => ListingScope::Effective,
            }
        } else {
            ListingScope::Effective
        }
    }
}