import: nuget: use xml->sxml's namespaces keyword.

* guix/import/nuget.scm (%nuget-nuspec): New variable.
(fetch-repo-info-from-snupkg): use xml->sxml's namespaces keyword.
reindentation. Do not use square brackets.

Change-Id: Ic86a12ab6557e0a7d627864c9ec39245f9cea892
Reviewed-by: Danny Milosavljevic <dannym@friendly-machines.com>
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
This commit is contained in:
Zheng Junjie 2025-06-19 23:24:30 +08:00 committed by Sharlatan Hellseher
parent 8b38fb8fa7
commit d8a61d2b0b
No known key found for this signature in database
GPG key ID: 76D727BFF62CD2B5

View file

@ -80,6 +80,7 @@
(define %nuget-v3-package-versions-url "https://api.nuget.org/v3-flatcontainer/")
(define %nuget-symbol-packages-url "https://globalcdn.nuget.org/symbol-packages/")
(define %nuget-nuspec "http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd")
;;; Version index https://api.nuget.org/v3-flatcontainer/{id-lower}/index.json
;;; nupkg download url https://api.nuget.org/v3-flatcontainer/{id-lower}/{version-lower}/{id-lower}.{version-lower}.nupkg
;;; nuspec url https://api.nuget.org/v3-flatcontainer/{id-lower}/{version-lower}/{id-lower}.nuspec
@ -273,12 +274,16 @@ success, or #f on failure."
#f)
(call-with-input-file (car nuspec-files)
(lambda (port)
(let* ((sxml (xml->sxml port #:trim-whitespace? #t)))
(let* ((sxml
(xml->sxml
port
#:trim-whitespace? #t
#:namespaces `((#f . ,%nuget-nuspec)))))
(car-safe
(filter-map
(lambda (node)
(sxml-match node
[(http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd:repository
((repository
(@ . ,attrs-raw)
. ,_)
(let ((attrs (map (lambda (attr)
@ -288,10 +293,9 @@ success, or #f on failure."
(if (or (assoc-ref attrs "url")
(assoc-ref attrs "commit"))
attrs
#f))]
[,otherwise #f]))
((sxpath '(// http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd:metadata
http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd:repository))
#f)))
(,otherwise #f)))
((sxpath '(// metadata repository))
sxml)))))))))))))
(lambda (key . args)
(warning (G_ "Failed to fetch or process snupkg file: ~a (Reason: ~a ~s)~%")