|
|
@@ -119,34 +119,39 @@ impl Dorado {
|
|
|
let pipe = format!("{dorado} | {samtools_view} | {samtools_sort}");
|
|
|
info!("Running: {pipe}");
|
|
|
|
|
|
- let pipe_cmd = cmd!("bash", "-c", pipe);
|
|
|
- let mut reader = pipe_cmd.stderr_capture().reader()?;
|
|
|
-
|
|
|
- let mut buffer = [0; 1];
|
|
|
- let mut line = String::new();
|
|
|
-
|
|
|
- loop {
|
|
|
- match reader.read(&mut buffer) {
|
|
|
- Ok(0) => break, // End of output
|
|
|
- Ok(_) => {
|
|
|
- let char = buffer[0] as char;
|
|
|
- eprint!("-{}", char);
|
|
|
- std::io::stderr().flush()?;
|
|
|
-
|
|
|
- if char == '\n' {
|
|
|
- // Send the complete line
|
|
|
- self.log.push(line.clone());
|
|
|
- line.clear();
|
|
|
- } else {
|
|
|
- line.push(char);
|
|
|
- }
|
|
|
- }
|
|
|
- Err(err) => {
|
|
|
- warn!("Error reading from stderr: {}", err);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ let pipe_cmd = cmd!("bash", "-c", &pipe);
|
|
|
+ pipe_cmd
|
|
|
+ .run()
|
|
|
+ .map_err(|e| anyhow::anyhow!("Failed to run pipe: {pipe}.\n\t{}", e.to_string()))?;
|
|
|
+
|
|
|
+ // let pipe_cmd = cmd!("bash", "-c", pipe);
|
|
|
+ // let mut reader = pipe_cmd.stderr_capture().reader()?;
|
|
|
+ //
|
|
|
+ // let mut buffer = [0; 1];
|
|
|
+ // let mut line = String::new();
|
|
|
+ //
|
|
|
+ // loop {
|
|
|
+ // match reader.read(&mut buffer) {
|
|
|
+ // Ok(0) => break, // End of output
|
|
|
+ // Ok(_) => {
|
|
|
+ // let char = buffer[0] as char;
|
|
|
+ // eprint!("-{}", char);
|
|
|
+ // std::io::stderr().flush()?;
|
|
|
+ //
|
|
|
+ // if char == '\n' {
|
|
|
+ // // Send the complete line
|
|
|
+ // self.log.push(line.clone());
|
|
|
+ // line.clear();
|
|
|
+ // } else {
|
|
|
+ // line.push(char);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // Err(err) => {
|
|
|
+ // warn!("Error reading from stderr: {}", err);
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
|
|
|
Ok(())
|
|
|
}
|
|
|
@@ -447,7 +452,7 @@ impl Dorado {
|
|
|
match time_point {
|
|
|
"normal" => config.normal_name.clone(),
|
|
|
"tumoral" => config.tumoral_name.clone(),
|
|
|
- _ => panic!("Error time point name")
|
|
|
+ _ => panic!("Error time point name"),
|
|
|
}
|
|
|
};
|
|
|
use crate::collection::flowcells::FlowCellLocation::*;
|
|
|
@@ -470,7 +475,7 @@ impl Dorado {
|
|
|
use crate::collection::flowcells::FlowCellExperiment::*;
|
|
|
match &flowcell.experiment {
|
|
|
WGSPod5Mux(pod_dir) => {
|
|
|
- let pod_dir = if let Some(base_pod_dir) = base_pod_dir {
|
|
|
+ let pod_dir = if let Some(base_pod_dir) = &base_pod_dir {
|
|
|
format!("{base_pod_dir}/{pod_dir}")
|
|
|
} else {
|
|
|
pod_dir.clone()
|
|
|
@@ -491,7 +496,7 @@ impl Dorado {
|
|
|
Dorado::from_mux(cases, config.clone())?;
|
|
|
}
|
|
|
WGSPod5Demux(pod_dir) => {
|
|
|
- let pod_dir = if let Some(base_pod_dir) = base_pod_dir {
|
|
|
+ let pod_dir = if let Some(base_pod_dir) = &base_pod_dir {
|
|
|
format!("{base_pod_dir}/{pod_dir}")
|
|
|
} else {
|
|
|
pod_dir.clone()
|
|
|
@@ -514,6 +519,10 @@ impl Dorado {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if base_pod_dir.is_some() {
|
|
|
+ fs::remove_dir_all(&config.unarchive_tmp_dir)?;
|
|
|
+ }
|
|
|
+
|
|
|
Ok(())
|
|
|
}
|
|
|
}
|