diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index cde492b..ec7b5c9 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -420,6 +420,36 @@ pub async fn run_chartread( state.spawn(app, id, binary, args, cwd).await } +#[derive(Debug, Deserialize, Serialize)] +pub struct AverageConfig { + pub inputs: Vec, + pub output: String, + pub cwd: String, +} + +pub fn build_average_args(config: &AverageConfig) -> Vec { + let mut args = vec!["-v".to_string()]; + for input in &config.inputs { + args.push(input.clone()); + } + args.push(config.output.clone()); + args +} + +#[tauri::command] +pub async fn run_average( + app: AppHandle, + state: State<'_, ProcessManager>, + config: AverageConfig, +) -> Result<(), String> { + let binary = resolve_binary(app.clone(), "average".to_string()).await?; + let args = build_average_args(&config); + let id = format!("average_{}", config.output); + let cwd = Some(resolve_safe_cwd(&app, &config.cwd)?); + + state.spawn(app, id, binary, args, cwd).await +} + #[derive(Debug, Deserialize, Serialize)] pub struct ColprofConfig { pub algorithm: String, @@ -726,6 +756,17 @@ mod tests { assert_eq!(args, vec!["-v", "-u", "-c", "1", "my_profile"]); } + #[test] + fn test_build_average_args() { + let config = AverageConfig { + inputs: vec!["pass1.ti3".to_string(), "pass2.ti3".to_string()], + output: "avg.ti3".to_string(), + cwd: "/home/user".to_string(), + }; + let args = build_average_args(&config); + assert_eq!(args, vec!["-v", "pass1.ti3", "pass2.ti3", "avg.ti3"]); + } + #[test] fn test_build_colprof_args() { let config = ColprofConfig { diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 31cda44..f6e5ef4 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -26,6 +26,7 @@ pub fn run() { commands::read_file_base64, commands::read_tiff_preview_png, commands::run_chartread, + commands::run_average, commands::run_colprof, commands::run_profcheck, commands::get_printers, diff --git a/src/index.html b/src/index.html index 104de42..10eb2b9 100644 --- a/src/index.html +++ b/src/index.html @@ -291,6 +291,20 @@
+ + +