mirror of
https://gitlab.cern.ch/wotsubo/psboard-qaqc-postprocess.git
synced 2024-11-23 15:41:18 +09:00
update: print error when no editor is specified & add-master-log doesn't
append csv file
This commit is contained in:
parent
4478ec1654
commit
3fdbe5ad4c
1 changed files with 19 additions and 11 deletions
30
src/main.rs
30
src/main.rs
|
@ -4,7 +4,7 @@ use std::{
|
|||
fmt::Display,
|
||||
fs::{self, File},
|
||||
io::{self, BufRead, BufReader},
|
||||
path::{self, Path, PathBuf},
|
||||
path::{self, PathBuf},
|
||||
str::FromStr,
|
||||
};
|
||||
|
||||
|
@ -351,11 +351,12 @@ impl PsbQaqcResult {
|
|||
// .collect_vec()
|
||||
// }
|
||||
|
||||
fn write_psbqaqc_csv(result: MasterLogResult, outfile: PathBuf) -> Result<()> {
|
||||
/// If `nonewfile` is `true`, out file is not created when there is already a file.
|
||||
fn write_psbqaqc_csv(result: MasterLogResult, outfile: PathBuf, nonewfile: bool) -> Result<()> {
|
||||
let expanded_results = PsbQaqcResult::from_masterlogresult(result);
|
||||
|
||||
let mut wtr = match outfile.exists() {
|
||||
true => {
|
||||
let mut wtr = match (outfile.exists(), nonewfile) {
|
||||
(true, false) => {
|
||||
let file = File::options()
|
||||
.read(true)
|
||||
.append(true)
|
||||
|
@ -364,7 +365,7 @@ fn write_psbqaqc_csv(result: MasterLogResult, outfile: PathBuf) -> Result<()> {
|
|||
.has_headers(false)
|
||||
.from_writer(file)
|
||||
}
|
||||
false => {
|
||||
(false, _) => {
|
||||
println!("Creating new file: {}", outfile.display());
|
||||
let file = File::options()
|
||||
.create_new(true)
|
||||
|
@ -374,6 +375,10 @@ fn write_psbqaqc_csv(result: MasterLogResult, outfile: PathBuf) -> Result<()> {
|
|||
.has_headers(true)
|
||||
.from_writer(file)
|
||||
}
|
||||
(true, true) => {
|
||||
error!("Out file already exists but specified not to make new file");
|
||||
return Err(anyhow!("Out file already exists"));
|
||||
}
|
||||
};
|
||||
for result in expanded_results {
|
||||
wtr.serialize(result)?;
|
||||
|
@ -409,7 +414,7 @@ fn main() -> Result<()> {
|
|||
|
||||
let outfile = outfile.unwrap_or(get_output_filename(&result));
|
||||
|
||||
write_psbqaqc_csv(result, outfile.clone())?;
|
||||
write_psbqaqc_csv(result, outfile.clone(), true)?;
|
||||
|
||||
println!("Add comments about errors in the last column of the CSV file");
|
||||
println!("Press any key to start editting...");
|
||||
|
@ -428,14 +433,17 @@ fn main() -> Result<()> {
|
|||
editor
|
||||
}
|
||||
(None, Err(e1), Err(e2)) => {
|
||||
info!("No VISUAL nor EDITOR found, {}, {}", e1, e2);
|
||||
warn!("No VISUAL nor EDITOR found, {}, {}", e1, e2);
|
||||
warn!("Using `nano` as a fallback editor");
|
||||
"nano".to_string()
|
||||
}
|
||||
};
|
||||
std::process::Command::new(editor)
|
||||
.arg(outfile.clone())
|
||||
.spawn()?
|
||||
.wait()?;
|
||||
.spawn()
|
||||
.context("Error during spawning editor")?
|
||||
.wait()
|
||||
.context("Error while waiting editor")?;
|
||||
|
||||
{
|
||||
let f = File::open(outfile.clone())?;
|
||||
|
@ -444,7 +452,7 @@ fn main() -> Result<()> {
|
|||
}
|
||||
println!();
|
||||
println!("Copy the CSV above and paste it to the database(Google sheets)");
|
||||
println!("Choose Data->Split text to columns to format it");
|
||||
println!("Choose `Data->Split text to columns` to format it");
|
||||
|
||||
println!("Press any key when upload finished...");
|
||||
terminal::enable_raw_mode()?;
|
||||
|
@ -483,7 +491,7 @@ fn main() -> Result<()> {
|
|||
|
||||
let outfile = outfile.unwrap_or(get_output_filename(&result));
|
||||
|
||||
write_psbqaqc_csv(result, outfile)?;
|
||||
write_psbqaqc_csv(result, outfile, false)?;
|
||||
}
|
||||
Commands::CheckDB { csvfile } => {
|
||||
// TODO: more friendly message (like row number)
|
||||
|
|
Loading…
Reference in a new issue