Skip to content

Commit 7b9913d

Browse files
authored
Merge pull request #762 from intersystems/namespace-mappings
Mappings expand <namespace> parameter
2 parents 82994ee + 9451df1 commit 7b9913d

File tree

5 files changed

+30
-4
lines changed

5 files changed

+30
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111
- Expanded Baseline Export to include custom HL7, X12, ASTM schemas and Lookup Tables (#693)
12+
- Mapping configuration expands \<namespace\> and \<token\> parameters to better support multi-namespace solutions (#710)
1213
- Settings page includes a test of the connection to the remote (#746)
1314

1415
### Fixed

cls/SourceControl/Git/Settings.cls

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ Property environmentName As %String(MAXLEN = "") [ InitialExpression = {##class(
6565
/// Whether the branch should or should not be locked down from changing namespaces
6666
Property lockBranch As %Boolean [ InitialExpression = {##class(SourceControl.Git.Utils).LockBranch()} ];
6767

68+
/// (Optional) A namespace-specific string that may be included in mapping configurations as <token> to support multi-namespace repositories
69+
Property mappingsToken As %String(MAXLEN = "") [ InitialExpression = {##class(SourceControl.Git.Utils).MappingsToken()} ];
70+
6871
Property Mappings [ MultiDimensional ];
6972

7073
Property favoriteNamespaces As %DynamicArray;
@@ -157,6 +160,7 @@ Method %Save() As %Status
157160
set @storage@("settings", "basicMode") = ..systemBasicMode
158161
set @storage@("settings", "environmentName") = ..environmentName
159162
set @storage@("settings", "lockBranch") = ..lockBranch
163+
set @storage@("settings", "mappingsToken") = ..mappingsToken
160164
if ..basicMode = "system" {
161165
kill @storage@("settings", "user", $username, "basicMode")
162166
} else {
@@ -519,3 +523,4 @@ Method SaveDefaults() As %Boolean
519523
}
520524

521525
}
526+

cls/SourceControl/Git/Utils.cls

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,11 @@ ClassMethod LockBranch() As %Boolean
190190
quit $get(@..#Storage@("settings","lockBranch"),0)
191191
}
192192

193+
ClassMethod MappingsToken() As %String
194+
{
195+
quit $get(@..#Storage@("settings","mappingsToken"),"")
196+
}
197+
193198
ClassMethod IsLIVE() As %Boolean
194199
{
195200
quit ..EnvironmentName()="LIVE"
@@ -2425,10 +2430,13 @@ ClassMethod Name(InternalName As %String, ByRef MappingExists As %Boolean) As %S
24252430

24262431
ClassMethod ExpandMappingParameters(MapDirectory, Settings As SourceControl.Git.Settings = {##class(SourceControl.Git.Settings).%New()})
24272432
{
2428-
return $replace(MapDirectory,"<env>", $zconvert($select(
2433+
set expandedDir = $replace(MapDirectory,"<env>", $zconvert($select(
24292434
Settings.environmentName = "": "DEVELOPMENT",
24302435
1: Settings.environmentName)
24312436
,"l"))
2437+
set expandedDir = $replace(expandedDir,"<namespace>", $zconvert($namespace,"l"))
2438+
set expandedDir = $replace(expandedDir,"<token>", Settings.mappingsToken)
2439+
return expandedDir
24322440
}
24332441

24342442
/// Implementation copied from %Library.RoutineMgr, but with results cached in a PPG.
@@ -3217,3 +3225,4 @@ ClassMethod IsSchemaStandard(pName As %String = "") As %Boolean [ Internal ]
32173225
}
32183226

32193227
}
3228+

csp/gitprojectsettings.csp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ body {
109109
set $Property(settings,param) = $Get(%request.Data(param,1))
110110
}
111111
if ('settings.settingsUIReadOnly) {
112-
for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace", "defaultMergeBranch","environmentName" {
112+
for param="gitBinPath","namespaceTemp","privateKeyFile","pullEventClass","percentClassReplace", "defaultMergeBranch","environmentName","mappingsToken" {
113113
set $Property(settings,param) = $Get(%request.Data(param,1))
114114
}
115115

@@ -274,7 +274,7 @@ body {
274274
</div>
275275

276276
<div class="form-group row mb-3">
277-
<label for="namespaceTemp" class="offset-sm-1 col-sm-3 col-form-label" data-toggle="tooltip" data-placement="top" title="Absolute path to you project">Git Repo Root Directory<br/></label>
277+
<label for="namespaceTemp" class="offset-sm-1 col-sm-3 col-form-label" data-toggle="tooltip" data-placement="top" title="Absolute path to your project">Git Repo Root Directory<br/></label>
278278
<server>
279279
set dir = ##class(%File).NormalizeDirectory(settings.namespaceTemp)
280280
if (settings.namespaceTemp '= "") && ##class(%File).DirectoryExists(dir_".git") {
@@ -506,6 +506,12 @@ body {
506506
</div>
507507
</div>
508508
</div>
509+
<div class="form-group row mb-3">
510+
<label for="mappingsToken" class="offset-sm-1 col-sm-3 col-form-label" data-toggle="tooltip" data-placement="top" title="(Optional) A namespace-specific string that may be included in mapping configurations as <token> to support multi-namespace repositories">Mappings Token</label>
511+
<div class="col-sm-7">
512+
<input type="text" class="form-control" id="mappingsToken" name="mappingsToken" value='#(..EscapeHTML(settings.mappingsToken))#'>
513+
</div>
514+
</div>
509515

510516
<div class="form-group row mb-3 mapping-input-group">
511517
<div class="offset-sm-1 col-sm-3">

test/UnitTest/SourceControl/Git/NameTest.cls

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,16 +64,21 @@ Method TestMixedFoldering()
6464
do $$$AssertEquals(##class(Utils).Name("TestPackage.Hello.World.mac"),"rtn/TestPackage/Hello/World.mac")
6565
}
6666

67-
Method TestEnvExpansion()
67+
Method TestParamExpansion()
6868
{
6969
try {
7070
set $$$SourceMapping("ESD","*") = "config/<env>/"
7171
set $$$SourceMapping("ESD","*","NoFolders") = 1
72+
set $$$SourceMapping("CLS","*") = "<namespace>/cls/"
73+
set $$$SourceMapping("INC","*") = "<token>/inc/"
7274
set settings = ##class(SourceControl.Git.Settings).%New()
7375
set oldEnvName = settings.environmentName
7476
set settings.environmentName = "TEST"
77+
set settings.mappingsToken = "mdi"
7578
$$$ThrowOnError(settings.%Save())
7679
do $$$AssertEquals(##class(SourceControl.Git.Utils).Name("Ens.Config.DefaultSettings.esd"),"config/test/Ens.Config.DefaultSettings.esd")
80+
do $$$AssertEquals(##class(SourceControl.Git.Utils).Name("test.class.cls"),$zconvert($namespace,"l")_"/cls/test/class.cls")
81+
do $$$AssertEquals(##class(SourceControl.Git.Utils).Name("test.routine.inc"),"mdi/inc/test/routine.inc")
7782
} catch err {
7883
do $$$AssertStatusOK(err.AsStatus())
7984
}

0 commit comments

Comments
 (0)