summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/config/mod.rs4
-rw-r--r--src/utils/abort_signal.rs2
-rw-r--r--src/utils/spinner.rs20
3 files changed, 16 insertions, 10 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs
index 26c0bda..7ca1972 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -29,7 +29,7 @@ use std::{
fs::{create_dir_all, read_dir, read_to_string, remove_file, File, OpenOptions},
io::Write,
path::{Path, PathBuf},
- process::exit,
+ process,
sync::Arc,
};
use syntect::highlighting::ThemeSet;
@@ -1529,7 +1529,7 @@ fn create_config_file(config_path: &Path) -> Result<()> {
.with_default(true)
.prompt()?;
if !ans {
- exit(0);
+ process::exit(0);
}
let client = Select::new("Platform:", list_client_types()).prompt()?;
diff --git a/src/utils/abort_signal.rs b/src/utils/abort_signal.rs
index 3a8007d..5329a9e 100644
--- a/src/utils/abort_signal.rs
+++ b/src/utils/abort_signal.rs
@@ -59,6 +59,6 @@ pub async fn watch_abort_signal(abort_signal: AbortSignal) {
if abort_signal.aborted() {
break;
}
- tokio::time::sleep(std::time::Duration::from_millis(100)).await;
+ tokio::time::sleep(std::time::Duration::from_millis(25)).await;
}
}
diff --git a/src/utils/spinner.rs b/src/utils/spinner.rs
index 72fd868..8df4f57 100644
--- a/src/utils/spinner.rs
+++ b/src/utils/spinner.rs
@@ -2,7 +2,7 @@ use anyhow::Result;
use crossterm::{cursor, queue, style, terminal};
use is_terminal::IsTerminal;
use std::{
- io::{stdout, Stdout, Write},
+ io::{stdout, Write},
time::Duration,
};
use tokio::{
@@ -31,14 +31,20 @@ impl Spinner {
self.message = format!(" {message}");
}
- pub fn step(&mut self, writer: &mut Stdout) -> Result<()> {
+ pub fn step(&mut self) -> Result<()> {
if self.stopped {
return Ok(());
}
+ let mut writer = stdout();
let frame = Self::DATA[self.index % Self::DATA.len()];
let dots = ".".repeat((self.index / 5) % 4);
let line = format!("{frame}{}{:<3}", self.message, dots);
- queue!(writer, cursor::MoveToColumn(0), style::Print(line),)?;
+ queue!(
+ writer,
+ cursor::MoveToColumn(0),
+ terminal::Clear(terminal::ClearType::FromCursorDown),
+ style::Print(line),
+ )?;
if self.index == 0 {
queue!(writer, cursor::Hide)?;
}
@@ -47,10 +53,11 @@ impl Spinner {
Ok(())
}
- pub fn stop(&mut self, writer: &mut Stdout) -> Result<()> {
+ pub fn stop(&mut self) -> Result<()> {
if self.stopped {
return Ok(());
}
+ let mut writer = stdout();
self.stopped = true;
queue!(
writer,
@@ -76,7 +83,6 @@ async fn run_spinner_inner(
stop_rx: oneshot::Receiver<()>,
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));
@@ -86,7 +92,7 @@ async fn run_spinner_inner(
tokio::select! {
_ = interval.tick() => {
if is_stdout_terminal {
- let _ = spinner.step(&mut writer);
+ let _ = spinner.step();
}
}
message = message_rx.recv() => {
@@ -99,7 +105,7 @@ async fn run_spinner_inner(
} => {}
_ = stop_rx => {
if is_stdout_terminal {
- spinner.stop(&mut writer)?;
+ spinner.stop()?;
}
}
}