~ruther/guix-local

d8a61d2b0b81d17e9183a0e0124f2fd3d1aa0a86 — Zheng Junjie 1 year, 4 months ago 8b38fb8
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>
1 files changed, 19 insertions(+), 15 deletions(-)

M guix/import/nuget.scm
M guix/import/nuget.scm => guix/import/nuget.scm +19 -15
@@ 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,25 274,28 @@ 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
                                               (@ . ,attrs-raw)
                                               . ,_)
                                              (let ((attrs (map (lambda (attr)
                                                                  (cons (symbol->string (car attr))
                                                                        (cadr attr)))
                                                                attrs-raw)))
                                                (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))
                                   ((repository
                                     (@ . ,attrs-raw)
                                     . ,_)
                                    (let ((attrs (map (lambda (attr)
                                                        (cons (symbol->string (car attr))
                                                              (cadr attr)))
                                                      attrs-raw)))
                                      (if (or (assoc-ref attrs "url")
                                              (assoc-ref attrs "commit"))
                                          attrs
                                          #f)))
                                   (,otherwise #f)))
                               ((sxpath '(// metadata repository))
                                sxml)))))))))))))
      (lambda (key . args)
        (warning (G_ "Failed to fetch or process snupkg file: ~a (Reason: ~a ~s)~%")