claps 0.2.0

CLIs written in Rust
Documentation
use std::ffi::OsStr;

use anyhow::Result;

use crate::common::log::LogResult;
use crate::external::bitwarden::types::Item;

fn list<I, S>(args: I) -> Result<String>
where
    I: IntoIterator<Item = S>,
    S: AsRef<OsStr>,
{
    crate::external::bitwarden::bw("list", args)
}

pub fn items(search: Option<&str>, folderid: Option<&str>) -> Result<Vec<Item>> {
    let mut args = vec!["items".to_string()];
    if let Some(search) = search {
        args.push(format!("--search={}", search));
    }
    if let Some(folderid) = folderid {
        args.push(format!("--folderid={}", folderid));
    }
    let items = list(args)?;
    serde_json::from_str(&items).log()
}