diff options
| author | sigoden <sigoden@gmail.com> | 2024-06-20 11:26:45 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-20 11:26:45 +0800 |
| commit | 2eab71a641827e503b14952373aec82661192ba2 (patch) | |
| tree | b2f1fd1d8b988391d85a8058dcaaadd6ef379533 /src/utils/spinner.rs | |
| parent | 3b3d39cef0211b607d51360d0739022f953ba1a7 (diff) | |
| download | aichat-2eab71a641827e503b14952373aec82661192ba2.tar.gz | |
feat: rag hybrid search (#618)
Diffstat (limited to 'src/utils/spinner.rs')
| -rw-r--r-- | src/utils/spinner.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/utils/spinner.rs b/src/utils/spinner.rs index c746469..72fd868 100644 --- a/src/utils/spinner.rs +++ b/src/utils/spinner.rs @@ -1,5 +1,6 @@ use anyhow::Result; use crossterm::{cursor, queue, style, terminal}; +use is_terminal::IsTerminal; use std::{ io::{stdout, Stdout, Write}, time::Duration, @@ -76,6 +77,7 @@ async fn run_spinner_inner( mut message_rx: mpsc::UnboundedReceiver<String>, ) -> Result<()> { let mut writer = stdout(); + let is_stdout_terminal = stdout().is_terminal(); let mut spinner = Spinner::new(&message); let mut interval = interval(Duration::from_millis(50)); tokio::select! { @@ -83,7 +85,9 @@ async fn run_spinner_inner( loop { tokio::select! { _ = interval.tick() => { - let _ = spinner.step(&mut writer); + if is_stdout_terminal { + let _ = spinner.step(&mut writer); + } } message = message_rx.recv() => { if let Some(message) = message { @@ -94,7 +98,9 @@ async fn run_spinner_inner( } } => {} _ = stop_rx => { - spinner.stop(&mut writer)?; + if is_stdout_terminal { + spinner.stop(&mut writer)?; + } } } Ok(()) |
