From 68c01a6515271cde2c33bff5179e596ab7073983 Mon Sep 17 00:00:00 2001 From: alisa Date: Thu, 7 Mar 2024 12:17:11 +0800 Subject: [PATCH] feat: check and log the output of pg_dump --version --- src/pg/dump.rs | 7 +++---- src/pg/mod.rs | 34 ++++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/pg/dump.rs b/src/pg/dump.rs index 38e72c0..948bb1e 100644 --- a/src/pg/dump.rs +++ b/src/pg/dump.rs @@ -69,10 +69,9 @@ pub async fn dump_database( let output = cmd.output().await.expect("Failed to execute pg_dump"); - if output.status.success() { - Ok(()) - } else { - Err(output.status.code()) + match output.status.success() { + true => Ok(()), + false => Err(output.status.code()), } } diff --git a/src/pg/mod.rs b/src/pg/mod.rs index 1ac06cd..4fc97e4 100644 --- a/src/pg/mod.rs +++ b/src/pg/mod.rs @@ -1,6 +1,6 @@ use tokio::process::Command; -use log::info; +use log::{error, info}; use crate::configs::PgDump; @@ -14,15 +14,29 @@ pub async fn preflight_check(pg_dump: &PgDump) { &pg_dump.binary_path ); - let status = Command::new(&pg_dump.binary_path) + let output = Command::new(&pg_dump.binary_path) .arg("--version") - .stdout(std::process::Stdio::null()) - .stderr(std::process::Stdio::null()) - .status() - .await; - - match status { - Ok(_) => info!("Preflight check: pg_dump binary found and version is ok"), - Err(e) => panic!("Failed to run pg_dump --version: {}", e), + .output() + .await + .expect("Failed to execute pg_dump"); + + let mut output_vec = output.stdout; + output_vec.retain(|&c| c != 10 && c != 13); + let output_message = String::from_utf8(output_vec); + + match output_message { + Ok(val) => info!("Preflight check: pg_dump output: {}", val), + Err(e) => error!("Preflight check: Failed to parse pg_dump output: {}", e), }; + + match output.status.success() { + true => info!("Preflight check: pg_dump binary found and version is ok"), + false => { + let err_message = String::from_utf8(output.stderr).unwrap_or("unknwon".to_string()); + panic!( + "Failed to run pg_dump --version with error: {}", + err_message + ); + } + } }