Skip to content

Commit 4543768

Browse files
committed
install prev versions
1 parent 8854691 commit 4543768

File tree

2 files changed

+52
-3
lines changed

2 files changed

+52
-3
lines changed

src/cls/ZPM/Registry.cls

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,11 @@ ClassMethod Reset() As %Status
9393
ClassMethod Package(pkg As %String = "", version As %String = "") As %Status
9494
{
9595
Set pkg = $$$lcase(pkg)
96+
97+
If (version="") {
98+
$$$ThrowOnError(##class(ZPM.UpLink).FindPackagInAllUpLinks(pkg))
99+
}
100+
96101
Set version = ##class(ZPM.Package).VersionFind(pkg, version)
97102
If (version = "") {
98103
Return ..ReportHttpStatusCode(..#HTTP404NOTFOUND)

src/cls/ZPM/UpLink.cls

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,49 @@ Method UpdatePackagesFromOneUpLink() As %Status
101101
While iter.%GetNext(.key , .package ) {
102102
Do ..AddPackage(package)
103103
}
104-
} Catch {
105-
Return 0
104+
} Catch ex {
105+
Do ex.Log()
106+
Return ex.AsStatus()
107+
}
108+
}
109+
110+
Method FindPackageInOneUpLink(pkg As %String)
111+
{
112+
If ('..MatchAllowlist(pkg)) {
113+
Return $$$ERROR($$$GeneralError, "invalid package name "_pkg)
114+
}
115+
Set httprequest = ..GetHttpRequest()
116+
Set searchStr = "packages/"_pkg
117+
Set tSC = httprequest.Get(..Location_searchStr)
118+
If ($$$ISERR(tSC)) { Return tSC }
119+
Try {
120+
Set package = {}.%FromJSON(httprequest.HttpResponse.Data)
121+
Set iter = package.versions.%GetIterator()
122+
While iter.%GetNext(.key , .version ) {
123+
set tPackage = {"name":(package.name), "description":"", "repository":(package.repository), "versions":[(version)]}
124+
Do ..AddPackage(tPackage)
125+
}
126+
} Catch ex {
127+
Do ex.Log()
128+
Return ex.AsStatus()
106129
}
107130
}
108131

132+
ClassMethod FindPackagInAllUpLinks(pkg As %String) As %Status
133+
{
134+
Do ..ReadUplinksFromFile()
135+
Set sql = "SELECT ID FROM ZPM.UpLink WHERE Active = 1 ORDER BY Position"
136+
Set statement = ##class(%SQL.Statement).%New()
137+
Set tSC = statement.%Prepare(sql)
138+
If $$$ISERR(tSC) { Return tSC }
139+
Set resultset=statement.%Execute()
140+
While resultset.%Next() {
141+
Set uplink = ..%OpenId(resultset.ID)
142+
Do uplink.FindPackageInOneUpLink(pkg)
143+
}
144+
Return $$$OK
145+
}
146+
109147
ClassMethod LoadPackageFromAllUpLinks(pkg As %String = "", version As %String = "") As ZPM.Package
110148
{
111149
Do ..ReadUplinksFromFile()
@@ -145,6 +183,7 @@ Method LoadPackageFromOneUpLink(pPackage As ZPM.Package, pkg As %String = "", ve
145183
$$$ThrowOnError(..LoadPackage(pPackage, pkg, version))
146184
$$$ThrowOnError(..LoadInstaller(pPackage, pkg, version))
147185
} Catch ex {
186+
do ex.Log()
148187
Return ex.AsStatus()
149188
}
150189
Return $$$OK
@@ -314,6 +353,7 @@ ClassMethod ReadUplinksFromFile() As %Status
314353
}
315354
}
316355
} Catch ex {
356+
do ex.Log()
317357
Set sc = ex.AsStatus()
318358
}
319359
Return sc
@@ -366,7 +406,11 @@ ClassMethod AddUplink(name, url, allowList, position) As %Status
366406
If $Data(tComponents("port"), port), port'="" {
367407
Set tUplink.Port = port
368408
}
369-
Set tUplink.Location = tComponents("path")
409+
Set tPath = tComponents("path")
410+
If ($EXTRACT(tPath,*) = "/") {
411+
Set tPath = $EXTRACT(tPath,1,*-1)
412+
}
413+
Set tUplink.Location = tPath
370414
If $Get(tComponents("scheme"))="https" {
371415
Set tUplink.SSL = 1
372416
}

0 commit comments

Comments
 (0)