Projects STRLCPY deduplicator Commits 10329015
🤬
  • added more progress bars to avoid blank states

  • Loading...
  • sreedev committed 1 year ago
    10329015
    1 parent de6d2e32
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    src/output.rs
    skipped 4 lines
    5 5  use chrono::DateTime;
    6 6  use colored::Colorize;
    7 7  use dashmap::DashMap;
     8 +use indicatif::{ProgressBar, ProgressIterator, ProgressStyle};
    8 9  use itertools::Itertools;
    9 10  use prettytable::{format, row, Table};
    10 11  use std::io::Write;
    skipped 142 lines
    153 154   }
    154 155   
    155 156   let mut output_table = Table::new();
     157 + let progress_bar = ProgressBar::new(duplicates.len() as u64);
     158 + let progress_style = ProgressStyle::default_bar()
     159 + .template("{spinner:.green} [generating output] [{wide_bar:.cyan/blue}] {pos}/{len} files")
     160 + .unwrap();
     161 + 
     162 + progress_bar.set_style(progress_style);
    156 163   output_table.set_titles(row!["hash", "duplicates"]);
     164 + 
    157 165   duplicates
    158 166   .into_iter()
    159 167   .sorted_unstable_by_key(|(_, f)| f.first().and_then(|ff| ff.size).unwrap_or_default())
     168 + .progress_with(progress_bar)
    160 169   .for_each(|(hash, group)| {
    161 170   let mut inner_table = Table::new();
    162 171   inner_table.set_format(*format::consts::FORMAT_NO_BORDER_LINE_SEPARATOR);
    skipped 13 lines
  • ■ ■ ■ ■ ■
    src/scanner.rs
    skipped 1 lines
    2 2  use anyhow::Result;
    3 3  use dashmap::DashMap;
    4 4  use fxhash::hash64 as hasher;
    5  -use indicatif::{ParallelProgressIterator, ProgressStyle};
     5 +use indicatif::{ParallelProgressIterator, ProgressBar, ProgressIterator, ProgressStyle};
    6 6  use memmap2::Mmap;
    7 7  use rayon::prelude::*;
    8 8  use std::hash::Hasher;
     9 +use std::time::Duration;
    9 10  use std::{fs, path::PathBuf};
    10 11   
    11 12  #[derive(Clone, Copy)]
    skipped 28 lines
    40 41   
    41 42  fn scan(app_opts: &Params) -> Result<Vec<File>> {
    42 43   let walker = app_opts.get_glob_walker()?;
     44 + let progress = ProgressBar::new_spinner();
     45 + let progress_style =
     46 + ProgressStyle::with_template("{spinner:.green} [mapping paths] {pos} paths")?;
     47 + progress.set_style(progress_style);
     48 + progress.enable_steady_tick(Duration::from_millis(100));
     49 + 
    43 50   let files = walker
     51 + .progress_with(progress)
    44 52   .filter_map(Result::ok)
    45 53   .map(|file| file.into_path())
    46 54   .filter(|fpath| fpath.is_file())
    47 55   .collect::<Vec<PathBuf>>()
    48 56   .into_par_iter()
    49 57   .progress_with_style(ProgressStyle::with_template(
    50  - "{spinner:.green} [processing scan results] [{wide_bar:.cyan/blue}] {pos}/{len} files",
     58 + "{spinner:.green} [processing mapped paths] [{wide_bar:.cyan/blue}] {pos}/{len} files",
    51 59   )?)
    52 60   .map(|fpath| fpath.display().to_string())
    53 61   .map(|fpath| File {
    skipped 73 lines
Please wait...
Page is in error, reload to recover