|
| 1 | +/// Mostly used from SourceControl.Git.API:MapEverywhere |
| 2 | +Class SourceControl.Git.Installer |
| 3 | +{ |
| 4 | + |
| 5 | +ClassMethod MapEverywhere() |
| 6 | +{ |
| 7 | + set sc = $$$OK |
| 8 | + try { |
| 9 | + set ns = $namespace |
| 10 | + set locDBDir = ##class(%SYS.Namespace).GetGlobalDest(ns,$Name(^IRIS.Msg("Studio"))) |
| 11 | + set vars("LocalizationDB") = ..DatabaseDirToName(locDBDir) |
| 12 | + set codeDBDir = ##class(%SYS.Namespace).GetPackageDest(ns,"SourceControl.Git") |
| 13 | + set vars("RoutineDB") = ..DatabaseDirToName(codeDBDir) |
| 14 | + $$$ThrowOnError(..RunMapEverywhere(.vars)) |
| 15 | + } catch e { |
| 16 | + set sc = e.AsStatus() |
| 17 | + if '$quit { |
| 18 | + write !,$System.Status.GetErrorText(sc) |
| 19 | + } |
| 20 | + } |
| 21 | + quit sc |
| 22 | +} |
| 23 | + |
| 24 | +ClassMethod DatabaseDirToName(dbDir As %String) As %String [ Private ] |
| 25 | +{ |
| 26 | + New $Namespace |
| 27 | + Set $Namespace = "%SYS" |
| 28 | + Set tSC = ##class(Config.Databases).DatabasesByDirectory($Piece(dbDir,"^"),$Piece(dbDir,"^",2),.tDBList) |
| 29 | + $$$ThrowOnError(tSC) |
| 30 | + If ($ListLength(tDBList) '= 1) { |
| 31 | + // This is highly unexpected, but worth checking for anyway. |
| 32 | + $$$ThrowStatus($$$ERROR($$$GeneralError,$$$FormatText("Could not find database name for '%1'",tDBDir))) |
| 33 | + } |
| 34 | + $$$ThrowOnError(tSC) |
| 35 | + Quit $ListGet(tDBList) |
| 36 | +} |
| 37 | + |
| 38 | +/// This is a method generator whose code is generated by XGL. |
| 39 | +ClassMethod RunMapEverywhere(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal, Private ] |
| 40 | +{ |
| 41 | + quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "MapEverywhere") |
| 42 | +} |
| 43 | + |
| 44 | +XData MapEverywhere [ XMLNamespace = INSTALLER ] |
| 45 | +{ |
| 46 | +<Manifest> |
| 47 | +<Namespace Name="%ALL" Create="yes" Ensemble="no" Code="%DEFAULTDB" Data="%DEFAULTDB"> |
| 48 | +<Configuration> |
| 49 | +<GlobalMapping Global="IRIS.Msg" From="%DEFAULTDB" /> |
| 50 | +<GlobalMapping Global="IRIS.Msg("Studio")" From="${LocalizationDB}" /> |
| 51 | +<ClassMapping Package="SourceControl.Git" From="${RoutineDB}" /> |
| 52 | +</Configuration> |
| 53 | +</Namespace> |
| 54 | +</Manifest> |
| 55 | +} |
| 56 | + |
| 57 | +} |
0 commit comments