git.delta.rocks / jrsonnet / refs/commits / 966948d5e34b

difftreelog

fix invalid nix execution place

Yaroslav Bolyukin2024-11-14parent: #feb74e5.patch.diff
in: trunk

1 file changed

modifiedcrates/fleet-base/src/command.rsdiffbeforeafterboth
129 }129 }
130 out130 out
131 }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 out
139 }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 }
219219
220 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()).await
263 }
264 Either::Right(mut cmd) => {
265 cmd.stdout(openssh::Stdio::inherit());
266 run_nix_inner_ssh(str, cmd, &mut NixHandler::default()).await
267 }
268 }
256 }269 }
257}270}
258271