From e568d3530d3dc01698a8e5bb29284948c252904d Mon Sep 17 00:00:00 2001
From: Arthur BOUDREAULT <arthur@lydra.fr>
Date: Fri, 22 Jul 2022 12:13:12 +0200
Subject: [PATCH] feat: add purge system for local YunoHost backups

---
 roles/ynh_backup/templates/ynh_backup.sh.j2 | 27 +++++++++++++++++----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/roles/ynh_backup/templates/ynh_backup.sh.j2 b/roles/ynh_backup/templates/ynh_backup.sh.j2
index a4a7d40..8dff693 100644
--- a/roles/ynh_backup/templates/ynh_backup.sh.j2
+++ b/roles/ynh_backup/templates/ynh_backup.sh.j2
@@ -1,8 +1,25 @@
 #!/bin/sh
 
-yunohost backup create {% if ynh_backup.system %}--system{% endif %}{% if ynh_backup.apps %} --apps{% endif %}{% if ynh_backup.directory %} --output-directory {{ ynh_backup.directory }}/backup_$(date +%Y%m%d_%H%M) {% endif %}
+today=$(date +%Y%m%d_%H%M)
+old_backup=$(yunohost backup list --output-as plain | grep "$(date --date="2 days ago" +"%Y%m%d")")
 
-{% if ynh_backup.system is false and ynh_backup.apps is false %}
-    echo "Read the readme to know more about vars ynh_backup.system and ynh_backup.apps"
-    exit 1
-{% endif %}
+_check_old_backup() {
+  if [ -n "$old_backup" ]; then
+    for i in $old_backup; do
+      echo "Backup $i is 2 days old or more. Purging it now."
+      yunohost backup delete "$i"
+      echo "Purging of old backup is now complete."
+    done
+  else
+    echo "There is no old backup to be purged."
+  fi
+}
+
+_create_ynh_backup() {
+  echo "Backing up $today YunoHost data now."
+  yunohost backup create {% if ynh_backup.system %}--system{% endif %}{% if ynh_backup.apps %} --apps{% endif %}{% if ynh_backup.directory %} --output-directory {{ ynh_backup.directory }}/backup_"$today" {% endif %}
+
+}
+
+_check_old_backup
+_create_ynh_backup
-- 
GitLab