From: Bastian Dehn Date: Tue, 11 Aug 2026 15:40:07 +0000 (+0200) Subject: add write stat func X-Git-Tag: v1.0.6^2~1^2~7 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=3c348c621b870d707f9522536a83aab928ddf04a;p=simple-backup.git add write stat func --- diff --git a/src/backup b/src/backup index d3f44f3..0d21c67 100755 --- a/src/backup +++ b/src/backup @@ -425,6 +425,33 @@ check_backup_date() done } +update_stat() +{ + local config="$1" + local type= + local day= + local week= + local month= + stat_file=$(echo "$config" | jq --raw-output '.backup_stat_file') + [ "$stat_file" != "null" ] || return 0 + [ -f "$stat_file" ] || printf "none%-.s\n" {1..3} > "$stat_file" + + type=$(get_backup_type "$config") + day=$(awk 'NR==1 {print; exit}' "$stat_file") + week=$(awk 'NR==2 {print; exit}' "$stat_file") + month=$(awk 'NR==3 {print; exit}' "$stat_file") + + [ "$type" == "day" ] && day=$(get_date) + [ "$type" == "week" ] && week=$(get_date) + [ "$type" == "month" ] && month=$(get_date) + + { + echo "$day" + echo "$week" + echo "$month" + } > "$stat_file" +} + main() { local only_check="$1" diff --git a/tests/backup_tests.bats b/tests/backup_tests.bats index 28d86b3..1f223c7 100755 --- a/tests/backup_tests.bats +++ b/tests/backup_tests.bats @@ -1114,4 +1114,98 @@ teardown() { assert_line --index 0 "day none old" assert_line --index 1 "week none old" assert_line --index 2 "month 2000-01-01 old" +} + +# bats test_tags=backup:stat +@test "success update no stat config no file" { + mkdir --parents "build/test" + config="{}" + get_date() { + echo "2000-01-01" + } + + run update_stat "$config" "none" + + assert_success + [ ! -f "build/test/stats" ] +} + +# bats test_tags=backup:stat +@test "success update backup stat none" { + mkdir --parents "build/test" + config='{"backup_stat_file": "build/test/stats"}' + get_date() { + echo "2000-01-01" + } + + run update_stat "$config" + + assert_success + [ -f "build/test/stats" ] + assert_equal "$(awk 'NR==1 {print; exit}' "build/test/stats")" "none" + assert_equal "$(awk 'NR==2 {print; exit}' "build/test/stats")" "none" + assert_equal "$(awk 'NR==3 {print; exit}' "build/test/stats")" "none" +} + +# bats test_tags=backup:stat +@test "success update backup stat day" { + mkdir --parents "build/test" + touch "build/test/day" + config='{ + "backup_path": "build/test", + "backup_stat_file": "build/test/stats" + }' + get_date() { + echo "2000-01-01" + } + + run update_stat "$config" + + assert_success + [ -f "build/test/stats" ] + assert_equal "$(awk 'NR==1 {print; exit}' "build/test/stats")" "2000-01-01" + assert_equal "$(awk 'NR==2 {print; exit}' "build/test/stats")" "none" + assert_equal "$(awk 'NR==3 {print; exit}' "build/test/stats")" "none" +} + +# bats test_tags=backup:stat +@test "success update backup stat week" { + mkdir --parents "build/test" + touch "build/test/week" + config='{ + "backup_path": "build/test", + "backup_stat_file": "build/test/stats" + }' + get_date() { + echo "2000-01-01" + } + + run update_stat "$config" + + assert_success + [ -f "build/test/stats" ] + assert_equal "$(awk 'NR==1 {print; exit}' "build/test/stats")" "none" + assert_equal "$(awk 'NR==2 {print; exit}' "build/test/stats")" "2000-01-01" + assert_equal "$(awk 'NR==3 {print; exit}' "build/test/stats")" "none" +} + +# bats test_tags=backup:stat +@test "success update backup stat month" { + mkdir --parents "build/test" + touch "build/test/month" + config='{ + "backup_path": "build/test", + "backup_stat_file": "build/test/stats" + }' + get_date() { + echo "2000-01-01" + } + + run update_stat "$config" + + assert_success + [ -f "build/test/stats" ] + assert_equal "$(awk 'NR==1 {print; exit}' "build/test/stats")" "none" + assert_equal "$(awk 'NR==2 {print; exit}' "build/test/stats")" "none" + assert_equal "$(awk 'NR==3 {print; exit}' "build/test/stats")" "2000-01-01" } \ No newline at end of file