aboutsummaryrefslogtreecommitdiffstats
path: root/backup-email.rsc
diff options
context:
space:
mode:
Diffstat (limited to 'backup-email.rsc')
-rw-r--r--backup-email.rsc35
1 files changed, 19 insertions, 16 deletions
diff --git a/backup-email.rsc b/backup-email.rsc
index d097301..8015bea 100644
--- a/backup-email.rsc
+++ b/backup-email.rsc
@@ -9,11 +9,11 @@
# create and email backup and config file
# https://rsc.eworm.de/doc/backup-email.md
-:global GlobalFunctionsReady;
-:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
-
:local ExitOK false;
-:do {
+:onerror Err {
+ :global GlobalConfigReady; :global GlobalFunctionsReady;
+ :retry { :if ($GlobalConfigReady != true || $GlobalFunctionsReady != true) \
+ do={ :error ("Global config and/or functions not ready."); }; } delay=500ms max=50;
:local ScriptName [ :jobname ];
:global BackupPassword;
@@ -27,6 +27,7 @@
:global CleanName;
:global DeviceInfo;
+ :global FileExists;
:global FormatLine;
:global LogPrint;
:global MkDir;
@@ -124,17 +125,19 @@
attach=$Attach; remove-attach=true });
# wait for the mail to be sent
- :local I 0;
- :while ([ :len [ /file/find where name ~ ($FilePath . "\\.(backup|rsc)\$") ] ] > 0) do={
- :if ($I >= 120) do={
- $LogPrint warning $ScriptName ("Files are still available, sending e-mail failed.");
- :set PackagesUpdateBackupFailure true;
- :set ExitOK true;
- :error false;
- }
- :delay 1s;
- :set I ($I + 1);
+ :do {
+ :retry {
+ :if ([ $FileExists ($FilePath . ".conf") ".conf file" ] = true || \
+ [ $FileExists ($FilePath . ".backup") "backup" ] = true || \
+ [ $FileExists ($FilePath . ".rsc") "script" ] = true) do={
+ :error "Files are still available.";
+ }
+ } delay=1s max=120;
+ } on-error={
+ $LogPrint warning $ScriptName ("Files are still available, sending e-mail failed.");
+ :set PackagesUpdateBackupFailure true;
}
-} on-error={
- :global ExitError; $ExitError $ExitOK [ :jobname ];
+ # do not remove the files here, as the mail is still queued!
+} do={
+ :global ExitError; $ExitError $ExitOK [ :jobname ] $Err;
}