diff --git a/crates/cuddle-ci/src/rust_service/ssh_agent.rs b/crates/cuddle-ci/src/rust_service/ssh_agent.rs index dd4bc93..1327b76 100644 --- a/crates/cuddle-ci/src/rust_service/ssh_agent.rs +++ b/crates/cuddle-ci/src/rust_service/ssh_agent.rs @@ -2,56 +2,66 @@ use std::sync::Arc; use async_trait::async_trait; use dagger_sdk::{Container, Socket}; +use eyre::Context; use crate::{dagger_middleware::DaggerMiddleware, leptos_service::LeptosService}; use super::RustService; pub struct SshAgent { - socket: Socket, + client: dagger_sdk::Query, } impl SshAgent { - pub fn new(socket: Socket) -> Self { - Self { socket } + pub fn new(client: dagger_sdk::Query) -> Self { + Self { client } } } #[async_trait] impl DaggerMiddleware for SshAgent { async fn handle(&self, container: Container) -> eyre::Result { + let sock_var = + std::env::var("SSH_AUTH_SOCK").context("failed to find variable SSH_AUTH_SOCK")?; + + let socket = self.client.host().unix_socket(&sock_var); + let c = container - .with_unix_socket("/tmp/ssh_socket", self.socket.clone()) - .with_env_variable("SSH_AUTH_SOCK", "/tmp/ssh_socket"); + .with_unix_socket(&sock_var, socket) + .with_env_variable("SSH_AUTH_SOCK", &sock_var); Ok(c) } } pub trait SshAgentExt { - fn with_ssh_agent(&mut self, socket: dagger_sdk::Socket) -> &mut Self { + fn with_ssh_agent(&mut self) -> &mut Self { self } } impl SshAgentExt for RustService { - fn with_ssh_agent(&mut self, socket: dagger_sdk::Socket) -> &mut Self { + fn with_ssh_agent(&mut self) -> &mut Self { + let client = self.client.clone(); + self.with_stage(super::RustServiceStage::BeforeDeps(Arc::new( - SshAgent::new(socket.clone()), + SshAgent::new(client.clone()), ))) .with_stage(super::RustServiceStage::AfterBase(Arc::new(SshAgent::new( - socket.clone(), + client, )))) } } impl SshAgentExt for LeptosService { - fn with_ssh_agent(&mut self, socket: dagger_sdk::Socket) -> &mut Self { + fn with_ssh_agent(&mut self) -> &mut Self { + let client = self.client.clone(); + self.with_stage(super::RustServiceStage::BeforeDeps(Arc::new( - SshAgent::new(socket.clone()), + SshAgent::new(client.clone()), ))) .with_stage(super::RustServiceStage::AfterBase(Arc::new(SshAgent::new( - socket.clone(), + client, )))) } }