From e4a7c628287a70f3eacc81a1b7cc824669e91ae0 Mon Sep 17 00:00:00 2001 From: Joseph Montanaro Date: Thu, 19 Sep 2024 11:34:40 -0400 Subject: [PATCH] send SaveCredential request to frontend on docker store --- src-tauri/creddy_cli/src/cli/docker.rs | 25 +++++++++++++++++++++---- src-tauri/creddy_cli/src/cli/mod.rs | 5 +++-- src-tauri/creddy_cli/src/main.rs | 2 +- src-tauri/src/main.rs | 2 +- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src-tauri/creddy_cli/src/cli/docker.rs b/src-tauri/creddy_cli/src/cli/docker.rs index 4d8d6ba..f4a55de 100644 --- a/src-tauri/creddy_cli/src/cli/docker.rs +++ b/src-tauri/creddy_cli/src/cli/docker.rs @@ -1,10 +1,27 @@ use std::io; -use crate::proto::DockerCredential; +use anyhow::bail; + +use crate::proto::{CliResponse, DockerCredential}; +use super::{ + CliCredential, + CliRequest, + GlobalArgs +}; -pub fn docker_store() -> anyhow::Result<()> { +pub fn docker_store(global_args: GlobalArgs) -> anyhow::Result<()> { let input: DockerCredential = serde_json::from_reader(io::stdin())?; - dbg!(input); - Ok(()) + dbg!(&input); + + let req = CliRequest::SaveCredential { + name: input.username.clone(), + is_default: false, // is_default doesn't really mean anything for Docker credentials + credential: CliCredential::Docker(input), + }; + + match super::make_request(global_args.server_addr, &req)?? { + CliResponse::Empty => Ok(()), + r => bail!("Unexpected response from server: {r}"), + } } diff --git a/src-tauri/creddy_cli/src/cli/mod.rs b/src-tauri/creddy_cli/src/cli/mod.rs index e5afae2..f567a65 100644 --- a/src-tauri/creddy_cli/src/cli/mod.rs +++ b/src-tauri/creddy_cli/src/cli/mod.rs @@ -201,10 +201,10 @@ pub fn invoke_shortcut(args: InvokeArgs, global: GlobalArgs) -> anyhow::Result<( } -pub fn docker_credential_helper(cmd: DockerCmd) -> anyhow::Result<()> { +pub fn docker_credential_helper(cmd: DockerCmd, global_args: GlobalArgs) -> anyhow::Result<()> { match cmd { DockerCmd::Get => todo!(), - DockerCmd::Store => docker::docker_store(), + DockerCmd::Store => docker::docker_store(global_args), DockerCmd::Erase => todo!(), } } @@ -214,6 +214,7 @@ pub fn docker_credential_helper(cmd: DockerCmd) -> anyhow::Result<()> { // to indicate when the operation succeeded or failed, which we deserialize. // However, the operation may fail to even communicate with the server, in // which case we return the outer Result +// (probably this should be modeled differently) #[tokio::main] async fn make_request( addr: Option, diff --git a/src-tauri/creddy_cli/src/main.rs b/src-tauri/creddy_cli/src/main.rs index 683c431..5aab1e2 100644 --- a/src-tauri/creddy_cli/src/main.rs +++ b/src-tauri/creddy_cli/src/main.rs @@ -11,7 +11,7 @@ fn main() { Some(Action::Get(args)) => creddy_cli::get(args, cli.global_args), Some(Action::Exec(args)) => creddy_cli::exec(args, cli.global_args), Some(Action::Shortcut(args)) => creddy_cli::invoke_shortcut(args, cli.global_args), - Some(Action::Docker(cmd)) => creddy_cli::docker_credential_helper(cmd), + Some(Action::Docker(cmd)) => creddy_cli::docker_credential_helper(cmd, cli.global_args), }; if let Err(e) = res { diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index c0b5187..0fb5cfe 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -21,7 +21,7 @@ fn main() { Some(Action::Get(args)) => creddy_cli::get(args, cli.global_args), Some(Action::Exec(args)) => creddy_cli::exec(args, cli.global_args), Some(Action::Shortcut(args)) => creddy_cli::invoke_shortcut(args, cli.global_args), - Some(Action::Docker(cmd)) => creddy_cli::docker_credential_helper(cmd), + Some(Action::Docker(cmd)) => creddy_cli::docker_credential_helper(cmd, cli.global_args), }; if let Err(e) = res {