Skip to content

Commit 0816f37

Browse files
committed
closing rfm aborts preview generation tasks
1 parent acecc8a commit 0816f37

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

src/main.rs

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,8 @@ async fn main() -> anyhow::Result<()> {
266266

267267
// The .await here is okay, because the PanelManager dropped the queue sender,
268268
// which makes these two guys instantly return:
269-
let dir_mngr_result = dir_mngr_handle.await;
270-
let prev_mngr_result = prev_mngr_handle.await;
269+
dir_mngr_handle.abort();
270+
prev_mngr_handle.abort();
271271

272272
// Be a good citizen, cleanup
273273
stdout
@@ -283,23 +283,7 @@ async fn main() -> anyhow::Result<()> {
283283
Ok(Ok(close_cmd)) => {
284284
if let CloseCmd::QuitErr { error } = &close_cmd {
285285
error!("{error}");
286-
// Print all errors
287-
let errors = logger.get_errors();
288-
if !errors.is_empty() {
289-
// Write error.log
290-
let log_output: String = logger
291-
.get()
292-
.into_iter()
293-
.map(|(level, msg)| format!("{level}: {msg}\n"))
294-
.collect();
295-
let mut log = std::fs::File::create("./error.log")?;
296-
log.write_all(log_output.as_bytes())?;
297-
eprintln!("{}", ERROR_MSG);
298-
eprintln!("Error:");
299-
for e in errors {
300-
eprintln!("{e}");
301-
}
302-
}
286+
print_all_errors(&logger)?;
303287
return Ok(());
304288
}
305289
if let Some(choosedir) = args.choosedir {
@@ -322,18 +306,34 @@ async fn main() -> anyhow::Result<()> {
322306
}
323307
}
324308
}
325-
Ok(Err(e)) => {
326-
error!("PanelManager returned an error: {e}");
309+
Ok(e) => {
310+
e.context("panel manager returned an error")?;
327311
}
328-
Err(e) => {
329-
error!("PanelManager-task: {e}")
312+
e => {
313+
e.context("error in panel-manager task")??;
330314
}
331315
}
332-
if let Err(e) = dir_mngr_result {
333-
error!("dir-mngr-task: {e}");
334-
}
335-
if let Err(e) = prev_mngr_result {
336-
error!("preview-mngr-task: {e}");
316+
print_all_errors(&logger)?;
317+
Ok(())
318+
}
319+
320+
fn print_all_errors(logger: &LogBuffer) -> anyhow::Result<()> {
321+
let errors = logger.get_errors();
322+
if !errors.is_empty() {
323+
// Write error.log
324+
let log_output: String = logger
325+
.get()
326+
.into_iter()
327+
.map(|(level, msg)| format!("{level}: {msg}\n"))
328+
.collect();
329+
let mut log = std::fs::File::create("./error.log").context("failed to create error log")?;
330+
log.write_all(log_output.as_bytes())
331+
.context("failed to write to error log")?;
332+
eprintln!("{}", ERROR_MSG);
333+
eprintln!("Error:");
334+
for e in errors {
335+
eprintln!("{e}");
336+
}
337337
}
338338
Ok(())
339339
}

0 commit comments

Comments
 (0)