store: Add `store-path-package-name'.
* guix/store.scm (store-path-package-name): New procedure. * tests/utils.scm ("store-path-package-name"): New test.
This commit is contained in:
parent
07d18f39cc
commit
e3d741065e
|
@ -29,6 +29,7 @@
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
#:use-module (ice-9 rdelim)
|
#:use-module (ice-9 rdelim)
|
||||||
#:use-module (ice-9 ftw)
|
#:use-module (ice-9 ftw)
|
||||||
|
#:use-module (ice-9 regex)
|
||||||
#:export (nix-server?
|
#:export (nix-server?
|
||||||
nix-server-major-version
|
nix-server-major-version
|
||||||
nix-server-minor-version
|
nix-server-minor-version
|
||||||
|
@ -55,7 +56,8 @@
|
||||||
|
|
||||||
%store-prefix
|
%store-prefix
|
||||||
store-path?
|
store-path?
|
||||||
derivation-path?))
|
derivation-path?
|
||||||
|
store-path-package-name))
|
||||||
|
|
||||||
(define %protocol-version #x10b)
|
(define %protocol-version #x10b)
|
||||||
|
|
||||||
|
@ -446,3 +448,12 @@ file name. Return #t on success."
|
||||||
(define (derivation-path? path)
|
(define (derivation-path? path)
|
||||||
"Return #t if PATH is a derivation path."
|
"Return #t if PATH is a derivation path."
|
||||||
(and (store-path? path) (string-suffix? ".drv" path)))
|
(and (store-path? path) (string-suffix? ".drv" path)))
|
||||||
|
|
||||||
|
(define (store-path-package-name path)
|
||||||
|
"Return the package name part of PATH, a file name in the store."
|
||||||
|
(define store-path-rx
|
||||||
|
(make-regexp (string-append "^.*" (regexp-quote (%store-prefix))
|
||||||
|
"/[^-]+-(.+)$")))
|
||||||
|
|
||||||
|
(and=> (regexp-exec store-path-rx path)
|
||||||
|
(cut match:substring <> 1)))
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
(define-module (test-utils)
|
(define-module (test-utils)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
|
#:use-module ((guix store) #:select (store-path-package-name))
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (srfi srfi-11)
|
#:use-module (srfi srfi-11)
|
||||||
#:use-module (srfi srfi-26)
|
#:use-module (srfi srfi-26)
|
||||||
|
@ -162,6 +163,12 @@
|
||||||
(match b (($ <foo> 1 2) #t))
|
(match b (($ <foo> 1 2) #t))
|
||||||
(equal? b c)))))
|
(equal? b c)))))
|
||||||
|
|
||||||
|
;; This is actually in (guix store).
|
||||||
|
(test-equal "store-path-package-name"
|
||||||
|
"bash-4.2-p24"
|
||||||
|
(store-path-package-name
|
||||||
|
"/nix/store/qvs2rj2ia5vci3wsdb7qvydrmacig4pg-bash-4.2-p24"))
|
||||||
|
|
||||||
(test-end)
|
(test-end)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue