index : bitwarden-ssh-agent.git

ascending towards madness

author holly sparkles <sparkles@holly.sh> 2023-07-29 11:49:13.0 +00:00:00
committer holly sparkles <sparkles@holly.sh> 2023-07-29 11:49:13.0 +00:00:00
commit
8452da6da8a3cc34fb27ee2075954a7758cead61 [patch]
tree
de339437e83e0dae7420460c9139a2acdc2232e0
parent
cb1595f4fe5356dfcd3e21b1a4ad20f20d33193d
download
8452da6da8a3cc34fb27ee2075954a7758cead61.tar.gz

feat: add searching for ssh key folders



Diff

 src/bwutil.rs | 13 +++++++++++++
 src/main.rs   |  3 ++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/bwutil.rs b/src/bwutil.rs
index 398089e..6815858 100644
--- a/src/bwutil.rs
+++ b/src/bwutil.rs
@@ -46,6 +46,19 @@ pub fn get_session_token() -> Result<String> {
	Ok(token)
}

/// Search Bitwarden for folders matching `folder_name` and return the results.
pub fn exec_folder_search(session: &str, folder_name: &str) -> Result<Vec<BitwardenFolder>> {
	let folders: Output = exec_interactive_command("bw", 
			["list", "folders", "--search", &folder_name, "--session", &session].to_vec());
	let result: String = String::from_utf8_lossy(&folders.stdout).to_string();
	if result.is_empty() {
		Err(anyhow!("Could not authenticate."))
	}
	else {
		Ok(serde_json::from_str(&result).with_context(|| "Could not deserialize folder search results.")?)
	}
}

/// Execute an interactive command.
/// 
/// The resulting output will be returned as `Output`. This is a modified version of:
diff --git a/src/main.rs b/src/main.rs
index f732812..1d6ba4e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -37,7 +37,8 @@ fn main() -> Result<()> {

	let session_token: String = check_session_token(&args)?;
	if !session_token.is_empty() {
		todo!()
		let result = bwutil::exec_folder_search(&session_token, &args.folder)?;
		println!("{:#?}", result);
	}

	Ok(())