diff --git a/module.xml b/module.xml index 898b993..0691cfc 100644 --- a/module.xml +++ b/module.xml @@ -4,7 +4,7 @@ zpm-registry Registry server for ZPM - 1.0.7 + 1.0.8 module src diff --git a/src/cls/ZPM/Package.cls b/src/cls/ZPM/Package.cls index 7595939..52203da 100644 --- a/src/cls/ZPM/Package.cls +++ b/src/cls/ZPM/Package.cls @@ -15,7 +15,7 @@ Property owner As %String; Index Owner On owner; -Property description As %String(MAXLEN = 200, TRUNCATE = 1); +Property description As %String(MAXLEN = 1000, TRUNCATE = 1); Property keywords As list Of %String; @@ -173,6 +173,28 @@ ClassMethod Populate(Path As %String, kill = 0) } } +Method UpdateDescriptionFromManifest() As %Status +{ + Try { + //save xml to file + Set tFileName = $$$FileTempDir_"/manifest.xml" + Set stream=##class(%Stream.FileCharacter).%New() + $$$ThrowOnError(stream.LinkToFile(tFileName)) + $$$ThrowOnError(stream.CopyFrom(..manifest)) + $$$ThrowOnError(stream.%Save()) + Kill stream + $$$ThrowOnError(##class(%XML.XPATH.Document).CreateFromFile(tFileName, .tDocument)) + $$$ThrowOnError(tDocument.EvaluateExpression("/Module/Description", "text()", .tRes)) + If (tRes.Count()>0) { + Set ..description = tRes.GetAt(1).Value + } + } Catch ex { + Do ex.Log() + return ex.AsStatus() + } + return $$$OK +} + ClassMethod LoadPackage(Path As %String, repository As %String = "", silent As %Boolean = 0) As %Status { SET tStream = ##class(%Stream.FileCharacter).%New() @@ -205,6 +227,10 @@ ClassMethod LoadPackage(Path As %String, repository As %String = "", silent As % WRITE !,"Version: ", version } + SET tSC=tDocument.EvaluateExpression("/Export/Document/Module/Description", "text()", .tRes) + IF $$$ISERR(tSC) Return tSC + SET description = tRes.GetAt(1).Value + SET archive = ##class(%Stream.FileBinary).%New() SET archiveFileName = ##class(%File).TempFilename("tgz") SET archive.Filename = archiveFileName @@ -220,6 +246,7 @@ ClassMethod LoadPackage(Path As %String, repository As %String = "", silent As % do ..%DeleteId(name _ "||" _version) SET package = ..%New() SET package.name = name + Set package.description = description Set package.repository = repository SET package.version = version SET package.package = archive @@ -387,16 +414,18 @@ ClassMethod GetSSLConfiguration(host) As %String QUIT host } -Query ListLatest(searchTerm As %String = "") As %SQLQuery(ROWSPEC = "name:%String,repository:%String,version:%String") +Query ListLatest(searchTerm As %String = "") As %SQLQuery(ROWSPEC = "name:%String,description:%String,repository:%String,version:%String") { -SELECT name, repository, ( - SELECT TOP 1 version FROM ZPM.Package p2 WHERE p1.name=p2.name - ORDER BY versionMajor DESC, versionMinor DESC, versionPatch DESC, versionPrerelease DESC, versionBuildmetadata DESC ) version +SELECT name, repository, version, description FROM ZPM.Package p1 -WHERE :searchTerm IS NULL OR ( +WHERE + version= ( + SELECT TOP 1 version FROM ZPM.Package p2 WHERE p1.name=p2.name + ORDER BY versionMajor DESC, versionMinor DESC, versionPatch DESC, versionPrerelease DESC, versionBuildmetadata DESC ) + AND (:searchTerm IS NULL OR ( name %MATCHES :searchTerm OR description %MATCHES :searchTerm - OR keywords %MATCHES :searchTerm + OR keywords %MATCHES :searchTerm) ) GROUP BY name ORDER BY name diff --git a/src/cls/ZPM/Registry.cls b/src/cls/ZPM/Registry.cls index 6069682..7f6a552 100644 --- a/src/cls/ZPM/Registry.cls +++ b/src/cls/ZPM/Registry.cls @@ -158,7 +158,7 @@ ClassMethod PublishPackage() As %Status set package = ##class(ZPM.Package).%New() $$$ThrowOnError(package.%JSONImport(%request.Content)) - + $$$ThrowOnError(package.UpdateDescriptionFromManifest()) do ##class(ZPM.Package).NameVersionDelete(package.name, package.version) $$$ThrowOnError(package.%Save()) @@ -206,6 +206,7 @@ ClassMethod AllPackages() As %Status While tRS.%Next() { Set tPkgInfo = { "name": (tRS.name), + "description": (tRS.Description), "repository": (tRS.repository), "versions": [(tRS.version)] }