difftreelog
fix invalid nix execution place
in: trunk
1 file changed
crates/fleet-base/src/command.rsdiffbeforeafterboth129 }129 }130 out130 out131 }131 }132 fn into_command(self) -> Command {132 fn into_command_unchecked_local(self) -> Command {133 let mut out = Command::new(self.command);133 let mut out = Command::new(self.command);134 out.args(self.args);134 out.args(self.args);135 for (k, v) in self.env {135 for (k, v) in self.env {136 out.env(k, v);136 out.env(k, v);137 }137 }138 out138 out139 }139 }140 fn into_command_new(self) -> Result<Either<Command, openssh::OwningCommand<Arc<Session>>>> {140 fn into_command(self) -> Result<Either<Command, openssh::OwningCommand<Arc<Session>>>> {141 Ok(if let Some(session) = self.ssh_session.clone() {141 Ok(if let Some(session) = self.ssh_session.clone() {142 let cmd = self.translate_env_into_env().into_command();142 let cmd = self.translate_env_into_env().into_command_unchecked_local();143 Either::Right(143 Either::Right(144 cmd.over_ssh(session)144 cmd.over_ssh(session)145 .map_err(|e| anyhow!("ssh error: {e}"))?,145 .map_err(|e| anyhow!("ssh error: {e}"))?,146 )146 )147 } else {147 } else {148 let cmd = self.into_command();148 let cmd = self.into_command_unchecked_local();149 Either::Left(cmd)149 Either::Left(cmd)150 })150 })151 }151 }219219220 pub async fn run(self) -> Result<()> {220 pub async fn run(self) -> Result<()> {221 let str = self.clone().into_string();221 let str = self.clone().into_string();222 let cmd = self.wrap_sudo_if_needed().into_command_new()?;222 let cmd = self.wrap_sudo_if_needed().into_command()?;223 match cmd {223 match cmd {224 Either::Left(cmd) => run_nix_inner(str, cmd, &mut PlainHandler).await?,224 Either::Left(cmd) => run_nix_inner(str, cmd, &mut PlainHandler).await?,225 Either::Right(cmd) => run_nix_inner_ssh(str, cmd, &mut PlainHandler).await?,225 Either::Right(cmd) => run_nix_inner_ssh(str, cmd, &mut PlainHandler).await?,232 }232 }233 pub async fn run_bytes(self) -> Result<Vec<u8>> {233 pub async fn run_bytes(self) -> Result<Vec<u8>> {234 let str = self.clone().into_string();234 let str = self.clone().into_string();235 let cmd = self.wrap_sudo_if_needed().into_command_new()?;235 let cmd = self.wrap_sudo_if_needed().into_command()?;236 let v = match cmd {236 let v = match cmd {237 Either::Left(cmd) => run_nix_inner_stdout(str, cmd, &mut PlainHandler).await?,237 Either::Left(cmd) => run_nix_inner_stdout(str, cmd, &mut PlainHandler).await?,238 Either::Right(cmd) => run_nix_inner_stdout_ssh(str, cmd, &mut PlainHandler).await?,238 Either::Right(cmd) => run_nix_inner_stdout_ssh(str, cmd, &mut PlainHandler).await?,243 pub async fn run_nix_string(mut self) -> Result<String> {243 pub async fn run_nix_string(mut self) -> Result<String> {244 let str = self.clone().into_string();244 let str = self.clone().into_string();245 self.arg("--log-format").arg("internal-json");245 self.arg("--log-format").arg("internal-json");246 let cmd = self.wrap_sudo_if_needed().into_command();246 let cmd = self.wrap_sudo_if_needed().into_command()?;247 let bytes = run_nix_inner_stdout(str, cmd, &mut NixHandler::default()).await?;247 let bytes = match cmd {248 Either::Left(cmd) => run_nix_inner_stdout(str, cmd, &mut NixHandler::default()).await?,249 Either::Right(cmd) => {250 run_nix_inner_stdout_ssh(str, cmd, &mut NixHandler::default()).await?251 }252 };248 Ok(String::from_utf8(bytes)?)253 Ok(String::from_utf8(bytes)?)249 }254 }250 pub async fn run_nix(mut self) -> Result<()> {255 pub async fn run_nix(mut self) -> Result<()> {251 let str = self.clone().into_string();256 let str = self.clone().into_string();252 self.arg("--log-format").arg("internal-json");257 self.arg("--log-format").arg("internal-json");253 let mut cmd = self.wrap_sudo_if_needed().into_command();258 let cmd = self.wrap_sudo_if_needed().into_command()?;259 match cmd {260 Either::Left(mut cmd) => {254 cmd.stdout(Stdio::inherit());261 cmd.stdout(Stdio::inherit());255 run_nix_inner(str, cmd, &mut NixHandler::default()).await262 run_nix_inner(str, cmd, &mut NixHandler::default()).await263 }264 Either::Right(mut cmd) => {265 cmd.stdout(openssh::Stdio::inherit());266 run_nix_inner_ssh(str, cmd, &mut NixHandler::default()).await267 }268 }256 }269 }257}270}258271