From d56de24f4eee6e0be1053102e91a0d70546dd538 Mon Sep 17 00:00:00 2001 From: Pravin Barton <9560941+isc-pbarton@users.noreply.github.com> Date: Tue, 29 Apr 2025 11:20:36 -0400 Subject: [PATCH 1/2] enh: mappings expand parameter --- CHANGELOG.md | 1 + cls/SourceControl/Git/Utils.cls | 4 +++- test/UnitTest/SourceControl/Git/NameTest.cls | 4 +++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ddbf9e32..072ab709 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Expanded Baseline Export to include custom HL7, X12, ASTM schemas and Lookup Tables (#693) +- Mapping configuration expands \ parameter to support namespace-specific mappings (#710) - Settings page includes a test of the connection to the remote (#746) ### Fixed diff --git a/cls/SourceControl/Git/Utils.cls b/cls/SourceControl/Git/Utils.cls index b68b96ba..c79ae9ef 100644 --- a/cls/SourceControl/Git/Utils.cls +++ b/cls/SourceControl/Git/Utils.cls @@ -2425,10 +2425,12 @@ ClassMethod Name(InternalName As %String, ByRef MappingExists As %Boolean) As %S ClassMethod ExpandMappingParameters(MapDirectory, Settings As SourceControl.Git.Settings = {##class(SourceControl.Git.Settings).%New()}) { - return $replace(MapDirectory,"", $zconvert($select( + set expandedDir = $replace(MapDirectory,"", $zconvert($select( Settings.environmentName = "": "DEVELOPMENT", 1: Settings.environmentName) ,"l")) + set expandedDir = $replace(expandedDir,"", $zconvert($namespace,"l")) + return expandedDir } /// Implementation copied from %Library.RoutineMgr, but with results cached in a PPG. diff --git a/test/UnitTest/SourceControl/Git/NameTest.cls b/test/UnitTest/SourceControl/Git/NameTest.cls index 3bc97942..983c56b7 100644 --- a/test/UnitTest/SourceControl/Git/NameTest.cls +++ b/test/UnitTest/SourceControl/Git/NameTest.cls @@ -64,16 +64,18 @@ Method TestMixedFoldering() do $$$AssertEquals(##class(Utils).Name("TestPackage.Hello.World.mac"),"rtn/TestPackage/Hello/World.mac") } -Method TestEnvExpansion() +Method TestParamExpansion() { try { set $$$SourceMapping("ESD","*") = "config//" set $$$SourceMapping("ESD","*","NoFolders") = 1 + set $$$SourceMapping("CLS","*") = "/cls/" set settings = ##class(SourceControl.Git.Settings).%New() set oldEnvName = settings.environmentName set settings.environmentName = "TEST" $$$ThrowOnError(settings.%Save()) do $$$AssertEquals(##class(SourceControl.Git.Utils).Name("Ens.Config.DefaultSettings.esd"),"config/test/Ens.Config.DefaultSettings.esd") + do $$$AssertEquals(##class(SourceControl.Git.Utils).Name("test.class.cls"),$zconvert($namespace,"l")_"/cls/test/class.cls") } catch err { do $$$AssertStatusOK(err.AsStatus()) } From 9451df141657dac0414722ee1460686744b7700d Mon Sep 17 00:00:00 2001 From: Pravin Barton <9560941+isc-pbarton@users.noreply.github.com> Date: Fri, 16 May 2025 13:53:22 -0400 Subject: [PATCH 2/2] enh: add mapping token setting which allows defining a namespace type to be used in mappings --- CHANGELOG.md | 2 +- cls/SourceControl/Git/Settings.cls | 5 +++++ cls/SourceControl/Git/Utils.cls | 7 +++++++ csp/gitprojectsettings.csp | 10 ++++++++-- test/UnitTest/SourceControl/Git/NameTest.cls | 3 +++ 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 072ab709..7d6a97e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Expanded Baseline Export to include custom HL7, X12, ASTM schemas and Lookup Tables (#693) -- Mapping configuration expands \ parameter to support namespace-specific mappings (#710) +- Mapping configuration expands \ and \ parameters to better support multi-namespace solutions (#710) - Settings page includes a test of the connection to the remote (#746) ### Fixed diff --git a/cls/SourceControl/Git/Settings.cls b/cls/SourceControl/Git/Settings.cls index e33809bd..5b5f107d 100644 --- a/cls/SourceControl/Git/Settings.cls +++ b/cls/SourceControl/Git/Settings.cls @@ -65,6 +65,9 @@ Property environmentName As %String(MAXLEN = "") [ InitialExpression = {##class( /// Whether the branch should or should not be locked down from changing namespaces Property lockBranch As %Boolean [ InitialExpression = {##class(SourceControl.Git.Utils).LockBranch()} ]; +/// (Optional) A namespace-specific string that may be included in mapping configurations as to support multi-namespace repositories +Property mappingsToken As %String(MAXLEN = "") [ InitialExpression = {##class(SourceControl.Git.Utils).MappingsToken()} ]; + Property Mappings [ MultiDimensional ]; Property favoriteNamespaces As %DynamicArray; @@ -157,6 +160,7 @@ Method %Save() As %Status set @storage@("settings", "basicMode") = ..systemBasicMode set @storage@("settings", "environmentName") = ..environmentName set @storage@("settings", "lockBranch") = ..lockBranch + set @storage@("settings", "mappingsToken") = ..mappingsToken if ..basicMode = "system" { kill @storage@("settings", "user", $username, "basicMode") } else { @@ -519,3 +523,4 @@ Method SaveDefaults() As %Boolean } } + diff --git a/cls/SourceControl/Git/Utils.cls b/cls/SourceControl/Git/Utils.cls index c79ae9ef..ccc5a704 100644 --- a/cls/SourceControl/Git/Utils.cls +++ b/cls/SourceControl/Git/Utils.cls @@ -190,6 +190,11 @@ ClassMethod LockBranch() As %Boolean quit $get(@..#Storage@("settings","lockBranch"),0) } +ClassMethod MappingsToken() As %String +{ + quit $get(@..#Storage@("settings","mappingsToken"),"") +} + ClassMethod IsLIVE() As %Boolean { quit ..EnvironmentName()="LIVE" @@ -2430,6 +2435,7 @@ ClassMethod ExpandMappingParameters(MapDirectory, Settings As SourceControl.Git. 1: Settings.environmentName) ,"l")) set expandedDir = $replace(expandedDir,"", $zconvert($namespace,"l")) + set expandedDir = $replace(expandedDir,"", Settings.mappingsToken) return expandedDir } @@ -3219,3 +3225,4 @@ ClassMethod IsSchemaStandard(pName As %String = "") As %Boolean [ Internal ] } } + diff --git a/csp/gitprojectsettings.csp b/csp/gitprojectsettings.csp index 171ed7ef..054c11a7 100644 --- a/csp/gitprojectsettings.csp +++ b/csp/gitprojectsettings.csp @@ -109,7 +109,7 @@ body { set $Property(settings,param) = $Get(%request.Data(param,1)) } if ('settings.settingsUIReadOnly) { - for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace", "defaultMergeBranch","environmentName" { + for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace", "defaultMergeBranch","environmentName","mappingsToken" { set $Property(settings,param) = $Get(%request.Data(param,1)) } @@ -274,7 +274,7 @@ body {
- + set dir = ##class(%File).NormalizeDirectory(settings.namespaceTemp) if (settings.namespaceTemp '= "") && ##class(%File).DirectoryExists(dir_".git") { @@ -506,6 +506,12 @@ body {
+
+ +
+ +
+
diff --git a/test/UnitTest/SourceControl/Git/NameTest.cls b/test/UnitTest/SourceControl/Git/NameTest.cls index 983c56b7..ef1a6619 100644 --- a/test/UnitTest/SourceControl/Git/NameTest.cls +++ b/test/UnitTest/SourceControl/Git/NameTest.cls @@ -70,12 +70,15 @@ Method TestParamExpansion() set $$$SourceMapping("ESD","*") = "config//" set $$$SourceMapping("ESD","*","NoFolders") = 1 set $$$SourceMapping("CLS","*") = "/cls/" + set $$$SourceMapping("INC","*") = "/inc/" set settings = ##class(SourceControl.Git.Settings).%New() set oldEnvName = settings.environmentName set settings.environmentName = "TEST" + set settings.mappingsToken = "mdi" $$$ThrowOnError(settings.%Save()) do $$$AssertEquals(##class(SourceControl.Git.Utils).Name("Ens.Config.DefaultSettings.esd"),"config/test/Ens.Config.DefaultSettings.esd") do $$$AssertEquals(##class(SourceControl.Git.Utils).Name("test.class.cls"),$zconvert($namespace,"l")_"/cls/test/class.cls") + do $$$AssertEquals(##class(SourceControl.Git.Utils).Name("test.routine.inc"),"mdi/inc/test/routine.inc") } catch err { do $$$AssertStatusOK(err.AsStatus()) }