fix: address Task 2 review findings (stderr + cookie flags)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-21 10:52:30 -04:00
parent e76254912a
commit a62cd05f6c
3 changed files with 56 additions and 18 deletions

View File

@@ -1,14 +1,15 @@
use serde::Serialize;
use std::io::{BufRead, BufReader};
use std::process::{Command, Stdio};
use std::thread;
use tauri::ipc::Channel;
use crate::models::DependencyStatus;
use crate::models::{CookieSource, DependencyStatus};
use crate::services::dependency_manager;
#[tauri::command]
pub fn check_dependencies() -> Vec<DependencyStatus> {
dependency_manager::get_all_dependency_statuses()
pub fn check_dependencies(cookie_source: CookieSource) -> Vec<DependencyStatus> {
dependency_manager::get_all_dependency_statuses(&cookie_source)
}
#[derive(Clone, Serialize)]
@@ -33,11 +34,31 @@ pub async fn install_dependency(
.spawn()
.map_err(|e| format!("Failed to start install: {e}"))?;
if let Some(stdout) = child.stdout.take() {
let reader = BufReader::new(stdout);
for line in reader.lines().map_while(Result::ok) {
let _ = on_event.send(InstallEvent::Output { line });
}
let stdout_handle = child.stdout.take().map(|stdout| {
let on_event_stdout = on_event.clone();
thread::spawn(move || {
let reader = BufReader::new(stdout);
for line in reader.lines().map_while(Result::ok) {
let _ = on_event_stdout.send(InstallEvent::Output { line });
}
})
});
let stderr_handle = child.stderr.take().map(|stderr| {
let on_event_stderr = on_event.clone();
thread::spawn(move || {
let reader = BufReader::new(stderr);
for line in reader.lines().map_while(Result::ok) {
let _ = on_event_stderr.send(InstallEvent::Output { line });
}
})
});
if let Some(handle) = stdout_handle {
let _ = handle.join();
}
if let Some(handle) = stderr_handle {
let _ = handle.join();
}
let status = child.wait().map_err(|e| format!("Install failed: {e}"))?;