aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2024-12-09 09:13:18 +0100
committerGravatar Christian Hesse <mail@eworm.de>2024-12-09 11:49:50 +0100
commit519cb85e28e52c476ecb210e1ed201f64190f898 (patch)
tree0f64567c8631c4569c1ea62409f1f991b3039bc6
parente51191035b21c529efb4387dfe59976c3112f561 (diff)
parent210ef26b93364f4b69cde9ff34139d51572357ee (diff)
Merge branch 'func-exit-error' into next
-rw-r--r--global-functions.rsc20
-rw-r--r--mod/bridge-port-to.rsc6
-rw-r--r--mod/bridge-port-vlan.rsc6
-rw-r--r--mod/inspectvar.rsc6
-rw-r--r--mod/ipcalc.rsc6
-rw-r--r--mod/notification-email.rsc12
-rw-r--r--mod/notification-matrix.rsc12
-rw-r--r--mod/notification-ntfy.rsc12
-rw-r--r--mod/notification-telegram.rsc12
-rw-r--r--mod/scriptrunonce.rsc6
-rw-r--r--mod/ssh-keys-import.rsc12
-rw-r--r--mode-button.rsc6
12 files changed, 77 insertions, 39 deletions
diff --git a/global-functions.rsc b/global-functions.rsc
index 8941994..625f8cd 100644
--- a/global-functions.rsc
+++ b/global-functions.rsc
@@ -428,13 +428,15 @@
# simple macro to print error message on unintentional error
:set ExitError do={
- :local ExitOK [ :tostr $1 ];
- :local ScriptName [ :tostr $2 ];
+ :local ExitOK [ :tostr $1 ];
+ :local Name [ :tostr $2 ];
+ :global IfThenElse;
:global LogPrint;
:if ($ExitOK = "false") do={
- $LogPrint error $ScriptName ("Script '" . $ScriptName . "' exited with error.");
+ $LogPrint error $Name ([ $IfThenElse ([ :pick $Name 0 1 ] = "\$") \
+ "Function" "Script" ] . " '" . $Name . "' exited with error.");
}
}
@@ -1016,7 +1018,7 @@
}
# install new scripts, update existing scripts
-:set ScriptInstallUpdate do={
+:set ScriptInstallUpdate do={ :do {
:local Scripts [ :toarray $1 ];
:local NewComment [ :tostr $2 ];
@@ -1235,7 +1237,9 @@
:set GlobalConfigChanges;
:set GlobalConfigMigration;
}
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# lock script against multiple invocation
:set ScriptLock do={
@@ -1370,11 +1374,13 @@
}
# send notification via NotificationFunctions - expects at least two string arguments
-:set SendNotification do={
+:set SendNotification do={ :do {
:global SendNotification2;
$SendNotification2 ({ origin=$0; subject=$1; message=$2; link=$3; silent=$4 });
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# send notification via NotificationFunctions - expects one array argument
:set SendNotification2 do={
diff --git a/mod/bridge-port-to.rsc b/mod/bridge-port-to.rsc
index 7dae679..9e7b911 100644
--- a/mod/bridge-port-to.rsc
+++ b/mod/bridge-port-to.rsc
@@ -10,7 +10,7 @@
:global BridgePortTo;
-:set BridgePortTo do={
+:set BridgePortTo do={ :do {
:local BridgePortTo [ :tostr $1 ];
:global IfThenElse;
@@ -65,4 +65,6 @@
$LogPrint info $0 ("Re-enabling interfaces...");
/interface/ethernet/enable $InterfaceReEnable;
}
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
diff --git a/mod/bridge-port-vlan.rsc b/mod/bridge-port-vlan.rsc
index c9f55ae..18fa2db 100644
--- a/mod/bridge-port-vlan.rsc
+++ b/mod/bridge-port-vlan.rsc
@@ -10,7 +10,7 @@
:global BridgePortVlan;
-:global BridgePortVlan do={
+:global BridgePortVlan do={ :do {
:local ConfigTo [ :tostr $1 ];
:global IfThenElse;
@@ -74,4 +74,6 @@
$LogPrint info $0 ("Re-enabling interfaces...");
/interface/ethernet/enable $InterfaceReEnable;
}
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
diff --git a/mod/inspectvar.rsc b/mod/inspectvar.rsc
index 73205b2..0209214 100644
--- a/mod/inspectvar.rsc
+++ b/mod/inspectvar.rsc
@@ -12,11 +12,13 @@
:global InspectVarReturn;
# inspect variable and print on terminal
-:set InspectVar do={
+:set InspectVar do={ :do {
:global InspectVarReturn;
:put [ :tocrlf [ $InspectVarReturn $1 ] ];
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# inspect variable and return formatted string
:set InspectVarReturn do={
diff --git a/mod/ipcalc.rsc b/mod/ipcalc.rsc
index 003bdc3..021cd30 100644
--- a/mod/ipcalc.rsc
+++ b/mod/ipcalc.rsc
@@ -12,7 +12,7 @@
:global IPCalcReturn;
# print netmask, network, min host, max host and broadcast
-:set IPCalc do={
+:set IPCalc do={ :do {
:local Input [ :tostr $1 ];
:global FormatLine;
@@ -27,7 +27,9 @@
[ $FormatLine "HostMin" ($Values->"hostmin") ] . "\n" . \
[ $FormatLine "HostMax" ($Values->"hostmax") ] . "\n" . \
[ $FormatLine "Broadcast" ($Values->"broadcast") ]) ];
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# calculate and return netmask, network, min host, max host and broadcast
:set IPCalcReturn do={
diff --git a/mod/notification-email.rsc b/mod/notification-email.rsc
index 3d62ddf..e51779b 100644
--- a/mod/notification-email.rsc
+++ b/mod/notification-email.rsc
@@ -34,7 +34,7 @@
}
# flush e-mail queue
-:set FlushEmailQueue do={
+:set FlushEmailQueue do={ :do {
:global EmailQueue;
:global EitherOr;
@@ -113,7 +113,9 @@
} else={
/system/scheduler/set interval=1m comment="Waiting for retry..." $Scheduler;
}
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# generate filter for log-forward
:set LogForwardFilterLogForwarding do={
@@ -224,11 +226,13 @@
}
# send notification via e-mail - expects at least two string arguments
-:set SendEMail do={
+:set SendEMail do={ :do {
:global SendEMail2;
$SendEMail2 ({ origin=$0; subject=$1; message=$2; link=$3 });
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# send notification via e-mail - expects one array argument
:set SendEMail2 do={
diff --git a/mod/notification-matrix.rsc b/mod/notification-matrix.rsc
index 3adc1df..14f369d 100644
--- a/mod/notification-matrix.rsc
+++ b/mod/notification-matrix.rsc
@@ -18,7 +18,7 @@
:global SetupMatrixJoinRoom;
# flush Matrix queue
-:set FlushMatrixQueue do={
+:set FlushMatrixQueue do={ :do {
:global MatrixQueue;
:global IsFullyConnected;
@@ -57,7 +57,9 @@
/system/scheduler/remove [ find where name="_FlushMatrixQueue" ];
:set MatrixQueue;
}
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# send notification via Matrix - expects one array argument
:set ($NotificationFunctions->"matrix") do={
@@ -164,11 +166,13 @@
}
# send notification via Matrix - expects at least two string arguments
-:set SendMatrix do={
+:set SendMatrix do={ :do {
:global SendMatrix2;
$SendMatrix2 ({ origin=$0; subject=$1; message=$2; link=$3 });
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# send notification via Matrix - expects one array argument
:set SendMatrix2 do={
diff --git a/mod/notification-ntfy.rsc b/mod/notification-ntfy.rsc
index b2bb280..7e0234b 100644
--- a/mod/notification-ntfy.rsc
+++ b/mod/notification-ntfy.rsc
@@ -15,7 +15,7 @@
:global SendNtfy2;
# flush ntfy queue
-:set FlushNtfyQueue do={
+:set FlushNtfyQueue do={ :do {
:global NtfyQueue;
:global NtfyMessageIDs;
@@ -52,7 +52,9 @@
/system/scheduler/remove [ find where name="_FlushNtfyQueue" ];
:set NtfyQueue;
}
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# send notification via ntfy - expects one array argument
:set ($NotificationFunctions->"ntfy") do={
@@ -132,11 +134,13 @@
}
# send notification via ntfy - expects at least two string arguments
-:set SendNtfy do={
+:set SendNtfy do={ :do {
:global SendNtfy2;
$SendNtfy2 ({ origin=$0; subject=$1; message=$2; link=$3; silent=$4 });
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# send notification via ntfy - expects one array argument
:set SendNtfy2 do={
diff --git a/mod/notification-telegram.rsc b/mod/notification-telegram.rsc
index 671bd1c..7d75b8b 100644
--- a/mod/notification-telegram.rsc
+++ b/mod/notification-telegram.rsc
@@ -15,7 +15,7 @@
:global SendTelegram2;
# flush telegram queue
-:set FlushTelegramQueue do={
+:set FlushTelegramQueue do={ :do {
:global TelegramQueue;
:global TelegramMessageIDs;
@@ -56,7 +56,9 @@
/system/scheduler/remove [ find where name="_FlushTelegramQueue" ];
:set TelegramQueue;
}
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# send notification via telegram - expects one array argument
:set ($NotificationFunctions->"telegram") do={
@@ -180,11 +182,13 @@
}
# send notification via telegram - expects at least two string arguments
-:set SendTelegram do={
+:set SendTelegram do={ :do {
:global SendTelegram2;
$SendTelegram2 ({ origin=$0; subject=$1; message=$2; link=$3; silent=$4 });
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# send notification via telegram - expects one array argument
:set SendTelegram2 do={
diff --git a/mod/scriptrunonce.rsc b/mod/scriptrunonce.rsc
index 3d5dce9..c8dcf26 100644
--- a/mod/scriptrunonce.rsc
+++ b/mod/scriptrunonce.rsc
@@ -11,7 +11,7 @@
:global ScriptRunOnce;
# fetch and run script(s) once
-:set ScriptRunOnce do={
+:set ScriptRunOnce do={ :do {
:local Scripts [ :toarray $1 ];
:global ScriptRunOnceBaseUrl;
@@ -49,4 +49,6 @@
}
}
}
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
diff --git a/mod/ssh-keys-import.rsc b/mod/ssh-keys-import.rsc
index c7b2788..583e827 100644
--- a/mod/ssh-keys-import.rsc
+++ b/mod/ssh-keys-import.rsc
@@ -12,7 +12,7 @@
:global SSHKeysImportFile;
# import single key passed as string
-:set SSHKeysImport do={
+:set SSHKeysImport do={ :do {
:local Key [ :tostr $1 ];
:local User [ :tostr $2 ];
@@ -64,10 +64,12 @@
/file/remove "tmpfs/ssh-keys-import";
:return false;
}
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
# import keys from a file
-:set SSHKeysImportFile do={
+:set SSHKeysImportFile do={ :do {
:local FileName [ :tostr $1 ];
:local User [ :tostr $2 ];
@@ -106,4 +108,6 @@
$LogPrint warning $0 ("SSH key of type '" . $KeyVal->0 . "' is not supported.");
}
}
-}
+} on-error={
+ :global ExitError; $ExitError false $0;
+} }
diff --git a/mode-button.rsc b/mode-button.rsc
index 2d428ed..90fe80e 100644
--- a/mode-button.rsc
+++ b/mode-button.rsc
@@ -25,7 +25,7 @@
:if ([ :len $Scheduler ] = 0) do={
$LogPrint info $ScriptName ("Creating scheduler _ModeButtonScheduler, counting presses...");
- :global ModeButtonScheduler do={
+ :global ModeButtonScheduler do={ :do {
:local FuncName $0;
:global ModeButton;
@@ -81,7 +81,9 @@
} else={
$LogPrint info $FuncName ("No action defined for " . $Count . " mode-button presses.");
}
- }
+ } on-error={
+ :global ExitError; $ExitError false $0;
+ } }
/system/scheduler/add name="_ModeButtonScheduler" \
on-event=":global ModeButtonScheduler; \$ModeButtonScheduler;" interval=3s;
} else={