fix new stats unique count (#772)

This commit is contained in:
Conrad Ludgate 2023-03-09 09:47:22 +00:00 committed by GitHub
parent 991461f423
commit 1638cb57cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,4 @@
use std::collections::HashMap;
use std::collections::{HashMap, HashSet};
use chrono::{prelude::*, Duration};
use clap::Parser;
@ -24,18 +24,19 @@ pub struct Cmd {
}
fn compute_stats(history: &[History], count: usize) -> Result<()> {
let mut commands = HashMap::<&str, usize>::new();
let mut commands = HashSet::<&str>::with_capacity(history.len());
let mut prefixes = HashMap::<&str, usize>::with_capacity(history.len());
for i in history {
let command = i.command.split_ascii_whitespace().next();
commands.insert(i.command.as_str());
if command.is_none() {
continue;
}
let Some(command) = i.command.split_ascii_whitespace().next() else {
continue
};
*commands.entry(command.unwrap()).or_default() += 1;
*prefixes.entry(command).or_default() += 1;
}
let unique = commands.len();
let mut top = commands.into_iter().collect::<Vec<_>>();
let mut top = prefixes.into_iter().collect::<Vec<_>>();
top.sort_unstable_by_key(|x| std::cmp::Reverse(x.1));
top.truncate(count);
if top.is_empty() {