From 58e371b35a206047b6fec0f4a54927247f86a365 Mon Sep 17 00:00:00 2001 From: Elijah Tamarchenko Date: Fri, 8 Nov 2024 14:42:56 -0500 Subject: [PATCH 1/3] add system settings --- CHANGELOG.md | 3 ++ cls/SourceControl/Git/Settings.cls | 22 +++++++++++ cls/_zpkg/isc/sc/git/Defaults.cls | 62 ++++++++++++++++++++++++++++++ csp/gitprojectsettings.csp | 36 +++++++++++++---- 4 files changed, 115 insertions(+), 8 deletions(-) create mode 100644 cls/_zpkg/isc/sc/git/Defaults.cls diff --git a/CHANGELOG.md b/CHANGELOG.md index 273355c7..37443b3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Creating a new branch now reports the error if uncommitted changes conflict (#624) - Fix Configure erroring out if git isn't found (#632) +### Added +- Added saving settings as system default for new namespaces (#535) + ## [2.7.0] - 2024-11-04 ### Added diff --git a/cls/SourceControl/Git/Settings.cls b/cls/SourceControl/Git/Settings.cls index 75e3da2f..3cb267a3 100644 --- a/cls/SourceControl/Git/Settings.cls +++ b/cls/SourceControl/Git/Settings.cls @@ -154,6 +154,7 @@ ClassMethod CreateNamespaceTempFolder() As %Status ClassMethod Configure() As %Boolean [ CodeMode = objectgenerator ] { do %code.WriteLine(" set inst = ..%New()") + do %code.WriteLine(" do inst.RetrieveDefaults()") set defaultPromptFlag = $$$DisableBackupCharMask + $$$TrapCtrlCMask + $$$EnableQuitCharMask + $$$DisableHelpCharMask + $$$DisableHelpContextCharMask + $$$TrapErrorMask set property = "" for { @@ -394,4 +395,25 @@ Method ConfigureBinPath(ByRef path As %String) As %Boolean return 1 } +Method RetrieveDefaults() As %Boolean +{ + do ##class(%zpkg.isc.sc.git.Defaults).GetDefaultSettings(.settings) + set iterator = settings.%GetIterator() + while iterator.%GetNext(.key, .value) { + set $property($this,key) = value + } + return $$$OK +} + +Method SaveDefaults() As %Boolean +{ + set defaults = {} + set items = $lb("gitBinPath", "namespaceTemp", "pullEventClass", "percentClassReplace", "environmentName", "systemBasicMode", "defaultMergeBranch", "mappedItemsReadOnly", "compileOnImport") + for i=1:1:$LISTLENGTH(items) { + set property = $listget(items,i) + do defaults.%Set(property, $property($this, property)) + } + return ##class(%zpkg.isc.sc.git.Defaults).SetDefaultSettings(defaults) +} + } diff --git a/cls/_zpkg/isc/sc/git/Defaults.cls b/cls/_zpkg/isc/sc/git/Defaults.cls new file mode 100644 index 00000000..4ce7dc7c --- /dev/null +++ b/cls/_zpkg/isc/sc/git/Defaults.cls @@ -0,0 +1,62 @@ +Class %zpkg.isc.sc.git.Defaults +{ + +ClassMethod GetDefaults() As %Library.DynamicObject [ NotInheritable, Private ] +{ + set defaults = {} + set storage = "^%SYS(""SourceControl"",""Git"",""defaults"")" + $$$AddAllRoleTemporary + + set key = $order(@storage@("")) + while key '= "" { + do defaults.%Set(key, $get(@storage@(key))) + set key = $order(@storage@(key)) + } + return defaults +} + +ClassMethod GetDefaultSettings(ByRef defaults As %Library.DynamicObject) As %Status +{ + try { + set defaults = ..GetDefaults() + } catch e { + return e.AsStatus() + } + return $$$OK +} + +ClassMethod SetDefaults(defaults As %Library.DynamicObject) As %Status [ NotInheritable, Private ] +{ + + $$$AddAllRoleTemporary + set storage = "^%SYS(""SourceControl"",""Git"",""defaults"")" + k @storage + set iterator = defaults.%GetIterator() + + while iterator.%GetNext(.key, .value) { + set @storage@(key) = value + } + + return $$$OK +} + +ClassMethod SetDefaultSettings(defaults As %Library.DynamicObject) As %Status [ NotInheritable ] +{ + + set newDefaults = {} + + set iterator = defaults.%GetIterator() + + while iterator.%GetNext(.key, .value) { + do newDefaults.%Set(key, value) + } + + try { + do ..SetDefaults(newDefaults) + } catch e { + return e.AsStatus() + } + return $$$OK +} + +} \ No newline at end of file diff --git a/csp/gitprojectsettings.csp b/csp/gitprojectsettings.csp index d0594fb7..323d91af 100644 --- a/csp/gitprojectsettings.csp +++ b/csp/gitprojectsettings.csp @@ -163,6 +163,10 @@ body { } set settings.favoriteNamespaces = contexts + + if ($get(%request.Data("proxySubmitButton",1)) = "saveDefaults") { + do settings.SaveDefaults() + } } do settings.%Save() } @@ -273,7 +277,7 @@ body { }
- +
Set fileExists = ##class(%File).Exists(settings.privateKeyFile) @@ -393,7 +397,7 @@ body {
- +