From 966948d5e34b961044039d37be29fdda9e030ac4 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Thu, 14 Nov 2024 22:32:02 +0000 Subject: [PATCH] fix: invalid nix execution place --- --- a/crates/fleet-base/src/command.rs +++ b/crates/fleet-base/src/command.rs @@ -129,7 +129,7 @@ } out } - fn into_command(self) -> Command { + fn into_command_unchecked_local(self) -> Command { let mut out = Command::new(self.command); out.args(self.args); for (k, v) in self.env { @@ -137,15 +137,15 @@ } out } - fn into_command_new(self) -> Result>>> { + fn into_command(self) -> Result>>> { Ok(if let Some(session) = self.ssh_session.clone() { - let cmd = self.translate_env_into_env().into_command(); + let cmd = self.translate_env_into_env().into_command_unchecked_local(); Either::Right( cmd.over_ssh(session) .map_err(|e| anyhow!("ssh error: {e}"))?, ) } else { - let cmd = self.into_command(); + let cmd = self.into_command_unchecked_local(); Either::Left(cmd) }) } @@ -219,7 +219,7 @@ pub async fn run(self) -> Result<()> { let str = self.clone().into_string(); - let cmd = self.wrap_sudo_if_needed().into_command_new()?; + let cmd = self.wrap_sudo_if_needed().into_command()?; match cmd { Either::Left(cmd) => run_nix_inner(str, cmd, &mut PlainHandler).await?, Either::Right(cmd) => run_nix_inner_ssh(str, cmd, &mut PlainHandler).await?, @@ -232,7 +232,7 @@ } pub async fn run_bytes(self) -> Result> { let str = self.clone().into_string(); - let cmd = self.wrap_sudo_if_needed().into_command_new()?; + let cmd = self.wrap_sudo_if_needed().into_command()?; let v = match cmd { Either::Left(cmd) => run_nix_inner_stdout(str, cmd, &mut PlainHandler).await?, Either::Right(cmd) => run_nix_inner_stdout_ssh(str, cmd, &mut PlainHandler).await?, @@ -243,16 +243,29 @@ pub async fn run_nix_string(mut self) -> Result { let str = self.clone().into_string(); self.arg("--log-format").arg("internal-json"); - let cmd = self.wrap_sudo_if_needed().into_command(); - let bytes = run_nix_inner_stdout(str, cmd, &mut NixHandler::default()).await?; + let cmd = self.wrap_sudo_if_needed().into_command()?; + let bytes = match cmd { + Either::Left(cmd) => run_nix_inner_stdout(str, cmd, &mut NixHandler::default()).await?, + Either::Right(cmd) => { + run_nix_inner_stdout_ssh(str, cmd, &mut NixHandler::default()).await? + } + }; Ok(String::from_utf8(bytes)?) } pub async fn run_nix(mut self) -> Result<()> { let str = self.clone().into_string(); self.arg("--log-format").arg("internal-json"); - let mut cmd = self.wrap_sudo_if_needed().into_command(); - cmd.stdout(Stdio::inherit()); - run_nix_inner(str, cmd, &mut NixHandler::default()).await + let cmd = self.wrap_sudo_if_needed().into_command()?; + match cmd { + Either::Left(mut cmd) => { + cmd.stdout(Stdio::inherit()); + run_nix_inner(str, cmd, &mut NixHandler::default()).await + } + Either::Right(mut cmd) => { + cmd.stdout(openssh::Stdio::inherit()); + run_nix_inner_ssh(str, cmd, &mut NixHandler::default()).await + } + } } } -- gitstuff