@@ -170,6 +170,13 @@ ClassMethod Configure() As %Boolean [ CodeMode = objectgenerator ]
170170 set propertyDef = ##class (%Dictionary.PropertyDefinition ).%OpenId (" SourceControl.Git.Settings||" _property _" " )
171171 if ((propertyDef ) && (propertyDef .Type = " %Boolean" )) {
172172 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 (" }" )
173180 } elseif ((propertyDef ) && (propertyDef .Name = " basicMode" )) {
174181 set basicModePromptFlag = defaultPromptFlag + $$$MatchExactArrayMask + $$$InitialDisplayMask
175182 do %code .WriteLine (" set list(1) = " " Yes" " " )
@@ -341,4 +348,35 @@ Method OnAfterConfigure() As %Boolean
341348 }
342349}
343350
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+
344382}
0 commit comments