@@ -170,6 +170,13 @@ ClassMethod Configure() As %Boolean [ CodeMode = objectgenerator ]
170
170
set propertyDef = ##class (%Dictionary.PropertyDefinition ).%OpenId (" SourceControl.Git.Settings||" _property _" " )
171
171
if ((propertyDef ) && (propertyDef .Type = " %Boolean" )) {
172
172
do %code .WriteLine (" set response = ##class(%Library.Prompt).GetYesNo(" _promptQuoted _" ,.value,," _defaultPromptFlag _" )" )
173
+ } elseif ((propertyDef ) && (propertyDef .Name = " gitBinPath" )) {
174
+ do %code .WriteLine (" set valid = 0" )
175
+ do %code .WriteLine (" while ('valid) {" )
176
+ do %code .WriteLine (" set response = ##class(%Library.Prompt).GetString(" _promptQuoted _" ,.value,,,," _defaultPromptFlag _" )" )
177
+ do %code .WriteLine (" set status = inst.ConfigureBinPath(.value)" )
178
+ do %code .WriteLine (" if (status) { set valid = 1 }" )
179
+ do %code .WriteLine (" }" )
173
180
} elseif ((propertyDef ) && (propertyDef .Name = " basicMode" )) {
174
181
set basicModePromptFlag = defaultPromptFlag + $$$MatchExactArrayMask + $$$InitialDisplayMask
175
182
do %code .WriteLine (" set list(1) = " " Yes" " " )
@@ -341,4 +348,35 @@ Method OnAfterConfigure() As %Boolean
341
348
}
342
349
}
343
350
351
+ Method ConfigureBinPath (ByRef path As %String ) As %Boolean
352
+ {
353
+ if (path = " " ) { return 1 }
354
+ // Sometimes path is quoted
355
+ set path = $replace (path ," " " " ," " )
356
+ if (##class (%File ).DirectoryExists (path )) {
357
+ set path = ##class (%File ).Construct (path , " git.exe" )
358
+ }
359
+
360
+ if (##class (%File ).Exists (path )) {
361
+ // no-op
362
+ } else {
363
+ write !, " The entered path is not a valid path, please try again"
364
+ return 0
365
+ }
366
+ try {
367
+ set sysStorage = ##class (SourceControl.Git.Utils ).%SYSNamespaceStorage ()
368
+ kill @sysStorage @(" %gitBinPath" )
369
+ if (..gitBinPath '= " " ) {
370
+ set @sysStorage @(" %gitBinPath" ) = path
371
+ }
372
+ kill ^||GitVersion
373
+ // Get and write the version
374
+ set gitExists = ##class (SourceControl.Git.Utils ).GitBinExists (.version )
375
+ write !, " You are now using " _version
376
+ } catch e {
377
+ // no-op, user may not have privileges
378
+ }
379
+ return 1
380
+ }
381
+
344
382
}
0 commit comments