aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2021-02-26 14:52:50 +0100
committerGravatar Christian Hesse <mail@eworm.de>2021-02-26 15:38:33 +0100
commit8e005452672bda1f1cd7fd2e7957ce6bdff934ee (patch)
treef88f567b02ac79010df9433009de0e392edab458
parentc48ad50f24458b28f4fc2f7d2845c519b541673a (diff)
global-functions: $ScriptInstallUpdate: validate syntax of changelog and migration code
-rw-r--r--global-functions43
1 files changed, 28 insertions, 15 deletions
diff --git a/global-functions b/global-functions
index aba1cff..7de3d72 100644
--- a/global-functions
+++ b/global-functions
@@ -730,27 +730,40 @@
:if ($Result->"status" = "finished") do={
:set ChangeLogCode ($Result->"data");
}
- :set NotificationMessage ($NotificationMessage . "\n\nChanges:");
- [ :parse $ChangeLogCode ];
- :for I from=($GlobalConfigVersion + 1) to=$ExpectedConfigVersion do={
- :local Migration ($GlobalConfigMigration->[ :tostr $I ]);
- :if ([ :typeof $Migration ] = "str") do={
- $LogPrintExit2 info $0 ("Applying migration: " . $Migration) false;
- [ :parse $Migration ];
- }
- :set NotificationMessage ($NotificationMessage . \
- "\n " . [ $IfThenElse ($NotificationsWithSymbols = true) ("\E2\97\8F") "*" ] . " " . \
- $GlobalConfigChanges->[ :tostr $I ]);
- $LogPrintExit2 info $0 ("Change: " . $GlobalConfigChanges->[ :tostr $I ]) false;
- }
- :set GlobalConfigChanges;
- :set GlobalConfigMigration;
} on-error={
$LogPrintExit2 warning $0 ("Failed fetching changes!") false;
:set NotificationMessage ($NotificationMessage . \
"\n\nChanges are not available.");
}
+ :if ([ :len $ChangeLogCode ] > 0) do={
+ :if ([ $ValidateSyntax $ChangeLogCode ] = true) do={
+ :set NotificationMessage ($NotificationMessage . "\n\nChanges:");
+ [ :parse $ChangeLogCode ];
+ :for I from=($GlobalConfigVersion + 1) to=$ExpectedConfigVersion do={
+ :local Migration ($GlobalConfigMigration->[ :tostr $I ]);
+ :if ([ :typeof $Migration ] = "str") do={
+ :if ([ $ValidateSyntax $Migration ] = true) do={
+ $LogPrintExit2 info $0 ("Applying migration: " . $Migration) false;
+ [ :parse $Migration ];
+ } else={
+ $LogPrintExit2 warning $0 ("Migration code for change " . $I . " failed syntax validation!") false;
+ }
+ }
+ :set NotificationMessage ($NotificationMessage . \
+ "\n " . [ $IfThenElse ($NotificationsWithSymbols = true) ("\E2\97\8F") "*" ] . " " . \
+ $GlobalConfigChanges->[ :tostr $I ]);
+ $LogPrintExit2 info $0 ("Change: " . $GlobalConfigChanges->[ :tostr $I ]) false;
+ }
+ :set GlobalConfigChanges;
+ :set GlobalConfigMigration;
+ } else={
+ $LogPrintExit2 warning $0 ("The changelog failed syntax validation!") false;
+ :set NotificationMessage ($NotificationMessage . \
+ "\n\nChanges are not available.");
+ }
+ }
+
:local Link;
:if ($IDonate != true) do={
:set NotificationMessage ($NotificationMessage . \