From: "Ludovic Courtès" <ludo@gnu.org>
To: guix-devel@gnu.org
Subject: [PATCH 5/6] services: Add 'lookup-service-types'.
Date: Wed, 8 Nov 2017 14:09:20 +0100 [thread overview]
Message-ID: <20171108130921.25202-6-ludo@gnu.org> (raw)
In-Reply-To: <20171108130921.25202-1-ludo@gnu.org>
* gnu/services.scm (lookup-service-types): New procedure.
* tests/services.scm ("lookup-service-types"): New test.
---
gnu/services.scm | 11 +++++++++++
tests/services.scm | 10 +++++++++-
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/gnu/services.scm b/gnu/services.scm
index df1bedeb9..016ff08e0 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -55,6 +55,7 @@
%service-type-path
fold-service-types
+ lookup-service-types
service
service?
@@ -192,6 +193,16 @@ is used as the initial value of RESULT."
seed
modules))
+(define lookup-service-types
+ (let ((table
+ (delay (fold-service-types (lambda (type result)
+ (vhash-consq (service-type-name type)
+ type result))
+ vlist-null))))
+ (lambda (name)
+ "Return the list of services with the given NAME (a symbol)."
+ (vhash-foldq* cons '() name (force table)))))
+
;; Services of a given type.
(define-record-type <service>
(make-service type value)
diff --git a/tests/services.scm b/tests/services.scm
index 8484ee982..ca32b565c 100644
--- a/tests/services.scm
+++ b/tests/services.scm
@@ -23,7 +23,8 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
- #:use-module (srfi srfi-64))
+ #:use-module (srfi srfi-64)
+ #:use-module (ice-9 match))
(define live-service
(@@ (gnu services herd) live-service))
@@ -206,4 +207,11 @@
(list (map live-service-provision unload)
(map shepherd-service-provision load)))))
+(test-eq "lookup-service-types"
+ system-service-type
+ (and (null? (lookup-service-types 'does-not-exist-at-all))
+ (match (lookup-service-types 'system)
+ ((one) one)
+ (x x))))
+
(test-end)
--
2.15.0
next prev parent reply other threads:[~2017-11-08 13:09 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-06 20:12 The usability of Guix configurations myglc2
2017-11-06 22:16 ` bug#29072: " Leo Famulari
2017-11-06 22:16 ` Leo Famulari
2017-11-06 23:26 ` myglc2
2017-11-06 23:26 ` bug#29072: " myglc2
2017-11-07 1:56 ` myglc2
2017-11-07 1:56 ` myglc2
2017-11-07 11:05 ` julien lepiller
2017-11-07 12:52 ` Hartmut Goebel
2017-11-07 13:13 ` julien lepiller
2017-11-07 14:11 ` myglc2
2017-11-07 14:52 ` julien lepiller
2017-11-07 15:59 ` myglc2
2017-11-07 16:25 ` [PATCH] " julien lepiller
[not found] ` <867ev2t13i.fsf@gmail.com>
2017-11-07 21:27 ` Julien Lepiller
2017-11-07 22:56 ` myglc2
2017-11-07 22:47 ` Reporting module errors Ludovic Courtès
2017-11-08 1:26 ` myglc2
2017-11-08 10:52 ` Hartmut Goebel
2017-11-08 14:02 ` Ludovic Courtès
2017-11-08 13:09 ` [PATCH 0/6] Error reporting and hints for missing modules Ludovic Courtès
2017-11-08 13:09 ` [PATCH 1/6] ui: Introduce (guix i18n) Ludovic Courtès
2017-11-08 13:09 ` [PATCH 2/6] ui: Define and honor '&error-location' and '&fix-hint' conditions Ludovic Courtès
2017-11-08 13:09 ` [PATCH 3/6] services: 'fold-service-types' honors its seed Ludovic Courtès
2017-11-08 13:09 ` [PATCH 4/6] services: 'fold-service-types' includes (gnu services) Ludovic Courtès
2017-11-08 13:09 ` Ludovic Courtès [this message]
2017-11-08 13:09 ` [PATCH 6/6] gnu: Improve error reporting of the use-.*modules macros Ludovic Courtès
2017-11-11 2:02 ` Chris Marusich
2017-11-11 13:56 ` Ludovic Courtès
2017-11-11 17:00 ` Chris Marusich
2017-11-08 15:33 ` [PATCH 0/6] Error reporting and hints for missing modules julien lepiller
2017-11-08 17:42 ` myglc2
2017-11-08 19:07 ` myglc2
2017-11-08 21:42 ` Ludovic Courtès
2017-11-09 23:04 ` Ludovic Courtès
2017-11-10 14:47 ` myglc2
2017-11-10 23:01 ` Julien Lepiller
2017-11-11 22:00 ` Ludovic Courtès
2017-11-11 22:02 ` Ludovic Courtès
2017-11-14 1:12 ` myglc2
2017-11-30 10:44 ` Ludovic Courtès
2017-11-07 14:45 ` The usability of Guix configurations Hartmut Goebel
2017-11-07 2:30 ` myglc2
2017-11-07 3:03 ` myglc2
2017-11-07 2:30 ` bug#29072: " myglc2
2017-11-07 2:59 ` myglc2
2017-11-07 20:54 ` myglc2
2017-11-07 10:23 ` bug#29072: " Ludovic Courtès
2017-11-07 10:23 ` Ludovic Courtès
2017-11-08 19:40 ` myglc2
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171108130921.25202-6-ludo@gnu.org \
--to=ludo@gnu.org \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.