global-functions: $ScriptInstallUpdate: set config and functions not ready...

... before reload. This should fix some corner cases where scripts ran
with broken configuration or functions.

Also do reload both - configuration and functions - to simplify the
function.
This commit is contained in:
Christian Hesse 2025-05-06 19:42:12 +02:00
parent 661aad522b
commit f095b581e7

View file

@ -1126,6 +1126,8 @@
:global CommitId; :global CommitId;
:global CommitInfo; :global CommitInfo;
:global ExpectedConfigVersion; :global ExpectedConfigVersion;
:global GlobalConfigReady;
:global GlobalFunctionsReady;
:global Identity; :global Identity;
:global IDonate; :global IDonate;
:global NoNewsAndChangesNotification; :global NoNewsAndChangesNotification;
@ -1159,8 +1161,7 @@
:local CommitIdBefore $CommitId; :local CommitIdBefore $CommitId;
:local ExpectedConfigVersionBefore $ExpectedConfigVersion; :local ExpectedConfigVersionBefore $ExpectedConfigVersion;
:local ReloadGlobalFunctions false; :local ReloadGlobal false;
:local ReloadGlobalConfig false;
:local DeviceMode [ /system/device-mode/get ]; :local DeviceMode [ /system/device-mode/get ];
:local CheckSums ({}); :local CheckSums ({});
@ -1269,31 +1270,25 @@
$LogPrint info $0 ("Updating script: " . $ScriptVal->"name"); $LogPrint info $0 ("Updating script: " . $ScriptVal->"name");
/system/script/set owner=($ScriptVal->"name") \ /system/script/set owner=($ScriptVal->"name") \
source=[ $IfThenElse ($ScriptUpdatesCRLF = true) $SourceCRLF $SourceNew ] $Script; source=[ $IfThenElse ($ScriptUpdatesCRLF = true) $SourceCRLF $SourceNew ] $Script;
:if ($ScriptVal->"name" = "global-config") do={ :if ($ScriptVal->"name" = "global-config" || \
:set ReloadGlobalConfig true; $ScriptVal->"name" = "global-functions" || \
} $ScriptVal->"name" ~ ("^mod/.")) do={
:if ($ScriptVal->"name" = "global-functions" || $ScriptVal->"name" ~ ("^mod/.")) do={ :set ReloadGlobal true;
:set ReloadGlobalFunctions true;
} }
} on-error={ } } on-error={ }
} }
:if ($ReloadGlobalFunctions = true) do={ :if ($ReloadGlobal = true) do={
$LogPrint info $0 ("Reloading global functions."); $LogPrint info $0 ("Reloading global configuration and functions.");
:do { :set GlobalConfigReady false;
/system/script/run global-functions; :set GlobalFunctionsReady false;
} on-error={ :delay 1s;
$LogPrint error $0 ("Reloading global functions failed!");
}
}
:if ($ReloadGlobalConfig = true) do={ :onerror Err {
$LogPrint info $0 ("Reloading global configuration.");
:do {
/system/script/run global-config; /system/script/run global-config;
} on-error={ /system/script/run global-functions;
$LogPrint error $0 ("Reloading global configuration failed!" . \ } do={
" Syntax error or missing overlay?"); $LogPrint error $0 ("Reloading global configuration and functions failed! " . $Err);
} }
} }