Skip to content

Commit f19b62e

Browse files
authored
Merge pull request #1861 from cachix/tasks-quiet
tasks: short-circuit ui logic in quiet mode
2 parents 596c451 + 46141c5 commit f19b62e

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

devenv-tasks/src/lib.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -757,14 +757,27 @@ impl TasksUi {
757757
}
758758

759759
pub async fn run(&mut self) -> Result<(TasksStatus, Outputs), Error> {
760+
let tasks_clone = Arc::clone(&self.tasks);
761+
let handle = tokio::spawn(async move { tasks_clone.run().await });
762+
763+
// If in quiet mode, just wait for tasks to complete and return
764+
if self.quiet {
765+
loop {
766+
let tasks_status = self.get_tasks_status().await;
767+
if tasks_status.pending == 0 && tasks_status.running == 0 {
768+
break;
769+
}
770+
}
771+
let tasks_status = self.get_tasks_status().await;
772+
return Ok((tasks_status, handle.await.unwrap()));
773+
}
774+
760775
let names = console::style(self.tasks.root_names.join(", ")).bold();
761776
let is_tty = self.term.is_term();
762777
self.console_write_line(&format!("{:17} {}\n", "Running tasks", names))?;
763778

764779
// start processing tasks
765780
let started = std::time::Instant::now();
766-
let tasks_clone = Arc::clone(&self.tasks);
767-
let handle = tokio::spawn(async move { tasks_clone.run().await });
768781

769782
// start TUI if we're connected to a TTY, otherwise use non-interactive output
770783
let mut last_list_height: u16 = 0;
@@ -986,11 +999,8 @@ impl TasksUi {
986999
Ok((tasks_status, handle.await.unwrap()))
9871000
}
9881001

989-
/// Outputs a message to the terminal, respecting the quiet flag
9901002
fn console_write_line(&self, message: &str) -> std::io::Result<()> {
991-
if !self.quiet {
992-
self.term.write_line(message)?;
993-
}
1003+
self.term.write_line(message)?;
9941004
Ok(())
9951005
}
9961006
}

devenv/src/devenv.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,12 @@ impl Devenv {
666666
.instrument(span)
667667
.await?
668668
};
669-
let test_script = test_script[0].to_string_lossy().to_string();
669+
let test_script_path = &test_script[0];
670+
671+
// Add GC root for test script to prevent garbage collection
672+
self.nix.add_gc("test", test_script_path).await?;
673+
674+
let test_script = test_script_path.to_string_lossy().to_string();
670675

671676
let temp_dir = tempfile::TempDir::with_prefix("devenv-test")
672677
.into_diagnostic()

0 commit comments

Comments
 (0)