VSP7Q7PXDDI4E6WAOAPSQVNIFALK2J3KG2IQNEQWQEXMKE2SPJKQC YJLEG4WRYKKQJMMDRKIRG4T4L7ZZ7N777EKIRSHHWHNZYWZJ7G5AC PCR2LDLTK6XVSBXJL6IMGQP7GSE5UNFCT6WRM2H5EPQ2AZWFRCFAC OA64RZOMOMELKGZE4MKMBJH6E6WE7BMP7OZHWQCZENSUZZ2ISXFQC ML5Y2THVDX7Z43RVTEI6KCTF2DHFJP5XKNYHVFJPJHDIBADBV5XQC D4OFR55J32745WILDBAYROEZNRTIFG7VGQTOYSXO4CAB7K55RG5QC D4SBRY6KHEAMGUEVWSUYHNCRYXCOC5JJ3N3DQ47ZXOXQGT73VERAC if let Some(ref status) = status {status_tx.send(Some((status.finished, status.code)));debug!("STATUS {:?}", status);use crate::db::jobs::dsl as jobs;diesel::update(jobs::jobs.find(job)).set((jobs::status.eq(status.code),jobs::ended.eq(status.finished),)).execute(db).await.unwrap();}
let (mut status_tx, _status_rx) = tokio::sync::watch::channel(None::<i32>);let (_kill_tx, mut kill_rx) = tokio::sync::oneshot::channel();for (script, s) in status.results.iter() {let mut cmd = tokio::process::Command::new("nix-store");cmd.arg("-r").arg(&s);let cmd = cmd.stderr(Stdio::piped()).stdout(Stdio::piped()).stdin(Stdio::null()).spawn()
if status.code != Some(0) {status_tx.send(Some((status.finished, status.code)))
ci::dump_cmd(cmd, &mut files, &mut kill_rx).await.unwrap();}for (script, s) in status.results.iter() {debug!("launching {:?} {:?}", s, script);let cmd = tokio::process::Command::new(format!("{}/bin/{script}", s.display())).stderr(Stdio::piped()).stdout(Stdio::piped()).stdin(Stdio::null()).spawn()
debug!("STATUS {:?}", status);use crate::db::jobs::dsl as jobs;diesel::update(jobs::jobs.find(job)).set((jobs::status.eq(status.code),jobs::ended.eq(status.finished),)).execute(db).await
ci::dump_cmd(cmd, &mut files, &mut kill_rx).await.unwrap();
} else {let (_kill_tx, mut kill_rx) = tokio::sync::oneshot::channel();for (script, s) in status.results.iter() {let mut cmd = tokio::process::Command::new("nix-store");cmd.arg("-r").arg(&s);let cmd = cmd.stderr(Stdio::piped()).stdout(Stdio::piped()).stdin(Stdio::null()).spawn().unwrap();ci::dump_cmd(cmd, &mut files, &mut kill_rx).await.unwrap();}for (n, (script, s)) in status.results.iter().enumerate() {debug!("launching {:?} {:?}", s, script);let cmd =tokio::process::Command::new(format!("{}/bin/{script}", s.display())).stderr(Stdio::piped()).stdout(Stdio::piped()).stdin(Stdio::null()).spawn().unwrap();let exit = ci::dump_cmd(cmd, &mut files, &mut kill_rx).await.unwrap();if exit != Some(0) || n == status.results.len() - 1 {let finished = chrono::Utc::now();debug!("STATUS {:?}", exit);status_tx.send(Some((finished, exit))).unwrap_or(());use crate::db::jobs::dsl as jobs;diesel::update(jobs::jobs.find(job)).set((jobs::status.eq(exit), jobs::ended.eq(finished))).execute(db).await.unwrap();break;}}