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"
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