Skip to content

Commit 143da97

Browse files
committed
2022.05.31:
* new: bash/github/accum-stats.sh: added `STATS_REMOVED_DATES` return variable, print last removed dates additionally to the last changed dates * new: bash/github/accum-stats.sh: `ENABLE_COMMIT_MESSAGE_DATE_TIME_WITH_LAST_CHANGED_DATE_OFFSET` environment variable to insert datetime suffix as offset to the last changed date in format `-DDT` to note the closest changed date
1 parent 7d35110 commit 143da97

File tree

5 files changed

+53
-8
lines changed

5 files changed

+53
-8
lines changed

bash/cache/accum-content.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ tkl_push_trap 'gh_flush_print_buffers; gh_prepend_changelog_file' EXIT
5353

5454
gh_print_notice_and_write_to_changelog_text_ln "current date/time: $current_date_time_utc" "$current_date_time_utc:"
5555

56-
current_date_utc=${current_date_time_utc/%T*}
56+
current_date_utc="${current_date_time_utc/%T*}"
5757

5858
current_date_utc_sec="$(date --utc -d "${current_date_utc}Z" +%s)" # seconds from epoch to current date
5959

bash/github/accum-rate-limits.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ tkl_push_trap 'gh_flush_print_buffers; gh_prepend_changelog_file' EXIT
3535

3636
gh_print_notice_and_write_to_changelog_text_ln "current date/time: $current_date_time_utc" "$current_date_time_utc:"
3737

38-
current_date_utc=${current_date_time_utc/%T*}
38+
current_date_utc="${current_date_time_utc/%T*}"
3939

4040
# stats between previous/next script execution (dependent to the pipeline scheduler times)
4141

bash/github/accum-stats.sh

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ tkl_push_trap 'gh_flush_print_buffers; gh_prepend_changelog_file' EXIT
3737

3838
gh_print_notice_and_write_to_changelog_text_ln "current date/time: $current_date_time_utc" "$current_date_time_utc:"
3939

40-
current_date_utc=${current_date_time_utc/%T*}
40+
current_date_utc="${current_date_time_utc/%T*}"
4141

4242
# CAUTION:
4343
# Sometimes the json data file comes empty for some reason.
@@ -193,8 +193,8 @@ for i in $(jq ".$stat_list_key|keys|.[]" $stats_json); do
193193
stats_count_next_seq="$stats_count_next_seq|$count"
194194
stats_uniques_next_seq="$stats_uniques_next_seq|$uniques"
195195
196-
timestamp_date_utc=${timestamp/%T*}
197-
timestamp_year_utc=${timestamp_date_utc/%-*}
196+
timestamp_date_utc="${timestamp/%T*}"
197+
timestamp_year_utc="${timestamp_date_utc/%-*}"
198198
199199
timestamp_year_dir="$stats_by_year_dir/$timestamp_year_utc"
200200
year_date_json="$timestamp_year_dir/$timestamp_date_utc.json"
@@ -319,9 +319,15 @@ done
319319
count_outdated_next=$count_outdated_prev
320320
uniques_outdated_next=$uniques_outdated_prev
321321
322+
stats_removed_dates=()
323+
322324
j=0
323325
for (( i=0; i < ${#stats_accum_timestamps[@]}; i++ )); do
324326
if [[ -z "$first_stats_timestamp" || "${stats_accum_timestamps[i]}" < "$first_stats_timestamp" ]]; then
327+
# NOTE:
328+
# Use the maximum only for the edge value, even if multiple values is outdated, because only
329+
# edge values has a significant interpolation distortion.
330+
#
325331
if (( j )); then
326332
(( count_outdated_next += ${stats_accum_counts[i]} ))
327333
(( uniques_outdated_next += ${stats_accum_uniques[i]} ))
@@ -330,6 +336,8 @@ for (( i=0; i < ${#stats_accum_timestamps[@]}; i++ )); do
330336
(( uniques_outdated_next += ${stats_accum_uniques_max[i]} ))
331337
fi
332338
(( j++ ))
339+
340+
stats_removed_dates[${#stats_removed_dates[@]}]="${stats_accum_timestamps/%T*}"
333341
fi
334342
done
335343
@@ -354,13 +362,37 @@ gh_write_notice_to_changelog_text_bullet_ln \
354362
"prev exec diff / last date diff / accum: unq all: +$stats_prev_exec_uniques_inc +$stats_prev_exec_count_inc -$stats_prev_exec_uniques_dec -$stats_prev_exec_count_dec / +$stats_last_changed_date_uniques_inc +$stats_last_changed_date_count_inc -$stats_last_changed_date_uniques_dec -$stats_last_changed_date_count_dec / $stats_last_changed_date_uniques $stats_last_changed_date_count"
355363
356364
stats_changed_dates=()
365+
stats_last_changed_date_utc=""
357366
358367
for (( i=0; i < ${#stats_changed_data_timestamps[@]}; i++ )); do
359368
stats_changed_data_timestamp_str="${stats_changed_data_timestamps[i]}"
360-
stats_changed_dates[i]="${stats_changed_data_timestamp_str/%T*}"
369+
stats_last_changed_date_utc="${stats_changed_data_timestamp_str/%T*}"
370+
stats_changed_dates[i]="$stats_last_changed_date_utc"
361371
done
362372
363-
gh_print_notice_and_write_to_changelog_text_bullet_ln "changed dates: [${stats_changed_dates[*]}]"
373+
# or use last removed date
374+
if [[ -z "$stats_last_changed_date_utc" ]] && (( ${#stats_removed_dates[@]} )); then
375+
stats_last_changed_date_utc="${stats_removed_dates[${#stats_removed_dates[@]} - 1]}"
376+
fi
377+
378+
if (( ENABLE_COMMIT_MESSAGE_DATE_TIME_WITH_LAST_CHANGED_DATE_OFFSET )); then
379+
last_changed_date_offset='+00T'
380+
381+
if [[ -n "$stats_last_changed_date_utc" ]]; then
382+
current_date_utc_sec="$(date --utc -d "${current_date_utc}Z" +%s)"
383+
last_changed_date_utc_sec="$(date --utc -d "${stats_last_changed_date_utc}Z" +%s)"
384+
385+
if (( current_date_utc_sec > last_changed_date_utc_sec )); then
386+
(( last_changed_date_offset_day = (current_date_utc_sec - last_changed_date_utc_sec) / 60 / 60 / 24 ))
387+
last_changed_date_offset="-$(printf %02u "$last_changed_date_offset_day")T"
388+
else
389+
(( last_changed_date_offset_day = (last_changed_date_utc_sec - current_date_utc_sec) / 60 / 60 / 24 ))
390+
last_changed_date_offset="+$(printf %02u "$last_changed_date_offset_day")T"
391+
fi
392+
fi
393+
fi
394+
395+
gh_print_notice_and_write_to_changelog_text_bullet_ln "removed / changed dates: [${stats_removed_dates[*]}] / [${stats_changed_dates[*]}]"
364396
365397
if (( count_outdated_prev == count_outdated_next && uniques_outdated_prev == uniques_outdated_next && \
366398
count_prev == count_next && uniques_prev == uniques_next )) && [[ \
@@ -436,7 +468,7 @@ for i in $(jq ".$stat_list_key|keys|.[]" $stats_json); do
436468
break
437469
fi
438470
439-
timestamp_year_utc=${timestamp_date_utc/%-*}
471+
timestamp_year_utc="${timestamp_date_utc/%-*}"
440472
441473
timestamp_year_dir="$stats_by_year_dir/$timestamp_year_utc"
442474
year_date_json="$timestamp_year_dir/$timestamp_date_utc.json"
@@ -483,6 +515,10 @@ if (( ENABLE_COMMIT_MESSAGE_DATE_WITH_TIME )); then
483515
commit_message_date_time_prefix="${current_date_time_utc%:*Z}Z"
484516
fi
485517
518+
if (( ENABLE_COMMIT_MESSAGE_DATE_TIME_WITH_LAST_CHANGED_DATE_OFFSET )); then
519+
commit_message_date_time_prefix="${commit_message_date_time_prefix}$last_changed_date_offset"
520+
fi
521+
486522
# return output variables
487523
488524
# CAUTION:
@@ -502,6 +538,7 @@ gh_set_env_var STATS_LAST_CHANGED_DATE_UNIQUES_INC "$stats_last_changed_date_un
502538
gh_set_env_var STATS_LAST_CHANGED_DATE_COUNT_DEC "$stats_last_changed_date_count_dec"
503539
gh_set_env_var STATS_LAST_CHANGED_DATE_UNIQUES_DEC "$stats_last_changed_date_uniques_dec"
504540
541+
gh_set_env_var STATS_REMOVED_DATES "${stats_removed_dates[*]}"
505542
gh_set_env_var STATS_CHANGED_DATES "${stats_changed_dates[*]}"
506543
507544
# counters of GitHub dated period (not greater than 14-days)

changelog.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
2022.05.31:
2+
* new: bash/github/accum-stats.sh: added `STATS_REMOVED_DATES` return variable, print last removed dates additionally to the last changed dates
3+
* new: bash/github/accum-stats.sh: `ENABLE_COMMIT_MESSAGE_DATE_TIME_WITH_LAST_CHANGED_DATE_OFFSET` environment variable to insert datetime suffix as offset to the last changed date in format `-DDT` to note the closest changed date
4+
15
2022.05.21:
26
* fixed: bash: inpage/accum-downloads.sh, boards/accum-stats.sh: accidental exit with 0 on curl error
37

userlog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
33
> :warning: to find all changes use [changelog.txt](https://github.com/andry81-devops/gh-workflow/blob/master/changelog.txt) file in a directory
44
5+
## 2022.05.31:
6+
* new: bash/github/accum-stats.sh: added `STATS_REMOVED_DATES` return variable, print last removed dates additionally to the last changed dates
7+
* new: bash/github/accum-stats.sh: `ENABLE_COMMIT_MESSAGE_DATE_TIME_WITH_LAST_CHANGED_DATE_OFFSET` environment variable to insert datetime suffix as offset to the last changed date in format `-DDT` to note the closest changed date
8+
59
## 2022.05.21:
610
* fixed: bash: inpage/accum-downloads.sh, boards/accum-stats.sh: accidental exit with 0 on curl error
711

0 commit comments

Comments
 (0)