publish: Remove 'regexp-exec' call from the hot path.

* guix/scripts/publish.scm (extract-narinfo-hash): Rewrite without
resorting to regexps.
This commit is contained in:
Ludovic Courtès 2017-07-21 14:48:52 +02:00 committed by Ludovic Courtès
parent 0a94dc6396
commit 33463986ba
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

View File

@ -565,13 +565,13 @@ has the given HASH of type ALGO."
" speaking. Welcome!")))
port)))))
(define extract-narinfo-hash
(let ((regexp (make-regexp "^([a-df-np-sv-z0-9]{32}).narinfo$")))
(lambda (str)
"Return the hash within the narinfo resource string STR, or false if STR
(define (extract-narinfo-hash str)
"Return the hash within the narinfo resource string STR, or false if STR
is invalid."
(and=> (regexp-exec regexp str)
(cut match:substring <> 1)))))
(and (string-suffix? ".narinfo" str)
(let ((base (string-drop-right str 8)))
(and (string-every %nix-base32-charset base)
base))))
(define (get-request? request)
"Return #t if REQUEST uses the GET method."