v0.2.12 : ligne de statut — temps dexecution de la derniere commande (⚡ ms/s) + ls parallele (tailles de dossiers reparties sur les coeurs, un seul appel de metadonnees par entree) — 130 entrees instantanees
This commit is contained in:
+23
-6
@@ -475,7 +475,9 @@ pub fn banner(app: &App, session: &ShellSession, session_id: &str) -> String {
|
||||
}
|
||||
|
||||
/// One-line status shown before every prompt (Hermes-style status bar).
|
||||
fn print_status(app: &App, session: &ShellSession, started: Instant) {
|
||||
/// The second parameter is the duration of the previous command (None before
|
||||
/// the first one).
|
||||
fn print_status(app: &App, session: &ShellSession, started: Instant, last: Option<Duration>) {
|
||||
let color = app.color();
|
||||
let sep = dim(" │ ", color);
|
||||
let cwd = shorten_head(¤t_dir_string(), 26);
|
||||
@@ -493,9 +495,16 @@ fn print_status(app: &App, session: &ShellSession, started: Instant) {
|
||||
),
|
||||
color,
|
||||
);
|
||||
let last_text = match last {
|
||||
Some(d) if d.as_secs() >= 1 => format_elapsed(d),
|
||||
Some(d) if d.as_millis() >= 1 => format!("{}ms", d.as_millis()),
|
||||
Some(d) => format!("{}µs", d.as_micros()),
|
||||
None => "—".to_string(),
|
||||
};
|
||||
let last_part = dim(&format!("⚡ {last_text}"), color);
|
||||
let elapsed = dim(&format_elapsed(started.elapsed()), color);
|
||||
println!(
|
||||
"{}am v{}{sep}{shell_part}{sep}{counts}{sep}⏲ {elapsed}",
|
||||
"{}am v{}{sep}{shell_part}{sep}{counts}{sep}{last_part}{sep}⏲ {elapsed}",
|
||||
dim(" ⚙ ", color),
|
||||
env!("CARGO_PKG_VERSION"),
|
||||
);
|
||||
@@ -694,8 +703,9 @@ fn run_with_editor(app: &App, session: &mut ShellSession) -> Result<i32> {
|
||||
}
|
||||
let started = Instant::now();
|
||||
let mut last: Option<DataTable> = None;
|
||||
let mut last_duration: Option<Duration> = None;
|
||||
loop {
|
||||
print_status(app, session, started);
|
||||
print_status(app, session, started, last_duration);
|
||||
match rl.readline("❯ ") {
|
||||
Ok(line) => {
|
||||
let trimmed = line.trim().to_string();
|
||||
@@ -703,7 +713,10 @@ fn run_with_editor(app: &App, session: &mut ShellSession) -> Result<i32> {
|
||||
continue;
|
||||
}
|
||||
let _ = rl.add_history_entry(trimmed.as_str());
|
||||
match handle_input(app, session, &mut last, &trimmed) {
|
||||
let t = Instant::now();
|
||||
let result = handle_input(app, session, &mut last, &trimmed);
|
||||
last_duration = Some(t.elapsed());
|
||||
match result {
|
||||
Ok(true) => break,
|
||||
Ok(false) => {}
|
||||
Err(e) => app.log.error(&format!("{e:#}")),
|
||||
@@ -725,8 +738,9 @@ fn run_with_editor(app: &App, session: &mut ShellSession) -> Result<i32> {
|
||||
fn run_plain(app: &App, session: &mut ShellSession) -> Result<i32> {
|
||||
let started = Instant::now();
|
||||
let mut last: Option<DataTable> = None;
|
||||
let mut last_duration: Option<Duration> = None;
|
||||
loop {
|
||||
print_status(app, session, started);
|
||||
print_status(app, session, started, last_duration);
|
||||
eprint!("❯ ");
|
||||
std::io::stderr().flush().ok();
|
||||
let mut line = String::new();
|
||||
@@ -737,7 +751,10 @@ fn run_plain(app: &App, session: &mut ShellSession) -> Result<i32> {
|
||||
if line.is_empty() {
|
||||
continue;
|
||||
}
|
||||
match handle_input(app, session, &mut last, &line) {
|
||||
let t = Instant::now();
|
||||
let result = handle_input(app, session, &mut last, &line);
|
||||
last_duration = Some(t.elapsed());
|
||||
match result {
|
||||
Ok(true) => break,
|
||||
Ok(false) => {}
|
||||
Err(e) => app.log.error(&format!("{e:#}")),
|
||||
|
||||
Reference in New Issue
Block a user