diff --git a/airlock_libs/Cargo.lock b/airlock_libs/Cargo.lock index ca2d548..719ddba 100644 --- a/airlock_libs/Cargo.lock +++ b/airlock_libs/Cargo.lock @@ -26,7 +26,7 @@ dependencies = [ [[package]] name = "airlock_libs" -version = "5.1.0" +version = "5.1.1" dependencies = [ "chrono", "crossbeam", diff --git a/airlock_libs/Cargo.toml b/airlock_libs/Cargo.toml index 36647a0..02c54b3 100644 --- a/airlock_libs/Cargo.toml +++ b/airlock_libs/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "airlock_libs" -version = "5.1.0" +version = "5.1.1" edition = "2024" [lib] diff --git a/airlock_libs/pyproject.toml b/airlock_libs/pyproject.toml index 02f03a9..7083989 100644 --- a/airlock_libs/pyproject.toml +++ b/airlock_libs/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "airlock_libs" -version = "5.1.0" +version = "5.1.1" description = "Airlock Digital API Wrapper" readme = "README.md" license = { text = "AGPL-3.0-only" } diff --git a/airlock_libs/src/services.rs b/airlock_libs/src/services.rs index ce95090..aee1edd 100644 --- a/airlock_libs/src/services.rs +++ b/airlock_libs/src/services.rs @@ -75,7 +75,7 @@ pub fn pull_policy_exec_histories( } let mut checkpoint_number: String = SkipBack::find_checkpoint(days).to_string(); let multi_progress = MultiProgress::new(); - multi_progress.set_draw_target(ProgressDrawTarget::stdout()); + multi_progress.set_draw_target(ProgressDrawTarget::stderr()); let progress_bar = multi_progress.add(ProgressBar::new(100)); progress_bar.set_style( ProgressStyle::default_bar() @@ -178,6 +178,7 @@ pub fn pull_policy_exec_histories( } } }); + let mut first_date: Option = None; tracer.in_span("Airlock Data Retreival", |cx| { let span = cx.span(); span.set_attribute(Key::new("Days").string(days.to_string())); @@ -209,11 +210,17 @@ pub fn pull_policy_exec_histories( "%Y-%m-%dT%H:%M:%SZ", ) { - let date_diff = Local::now().naive_local().date() - last_date; - let percentage_diff = - ((days - date_diff.num_days()) as f64 / days as f64 * 100.0).round() as u64; - progress_bar.set_position(percentage_diff); - progress_bar.set_message("Total Percent Complete"); + if first_date.is_none() { + first_date = Some(last_date); + } + if let Some(base_date) = first_date { + let date_diff = last_date - base_date; + let total_span = (Local::now().naive_local().date() - base_date).num_days(); + let percentage = ((date_diff.num_days() as f64 / total_span as f64) * 100.0) + .clamp(0.0, 100.0) + .round() as u64; + progress_bar.set_position(percentage); + } } } }); diff --git a/requirements.txt b/requirements.txt index 94ee402..ea2bce2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,4 +11,4 @@ urllib3==2.5.0 pyperclip==1.11.0 --extra-index-url https://git.racooncity.org/api/packages/brotoskyj/pypi/simple/ -airlock_libs==5.1.0 \ No newline at end of file +airlock_libs==5.1.1 \ No newline at end of file