aboutsummaryrefslogtreecommitdiff
path: root/emacs/guix-entry.el
blob: 5eed2ed0155a09bcc1d02e5edc466d7920a73fd7 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
;;; guix-entry.el --- 'Entry' type  -*- lexical-binding: t -*-

;; Copyright © 2015 Alex Kost <alezost@gmail.com>

;; This file is part of GNU Guix.

;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:

;; This file provides an API for 'entry' type which is just an alist of
;; KEY/VALUE pairs (KEY should be a symbol) with the required 'id' KEY.

;;; Code:

(require 'cl-lib)
(require 'guix-utils)

(defalias 'guix-entry-value #'guix-assq-value)

(defun guix-entry-id (entry)
  "Return ENTRY ID."
  (guix-entry-value entry 'id))

(defun guix-entry-by-id (id entries)
  "Return an entry from ENTRIES by its ID."
  (cl-find-if (lambda (entry)
                (equal (guix-entry-id entry) id))
              entries))

(defun guix-entries-by-ids (ids entries)
  "Return entries with IDS (a list of identifiers) from ENTRIES."
  (cl-remove-if-not (lambda (entry)
                      (member (guix-entry-id entry) ids))
                    entries))

(defun guix-replace-entry (id new-entry entries)
  "Replace an entry with ID from ENTRIES by NEW-ENTRY.
Return a list of entries with the replaced entry."
  (cl-substitute-if new-entry
                    (lambda (entry)
                      (equal id (guix-entry-id entry)))
                    entries
                    :count 1))

(provide 'guix-entry)

;;; guix-entry.el ends here
n-dovecot-test, run-getmail-test): Likewise. * gnu/tests/messaging.scm (run-xmpp-test) (run-bitlbee-test, run-quassel-test): Likewise. * gnu/tests/monitoring.scm (run-prometheus-node-exporter-server-test) (run-zabbix-server-test): Likewise. * gnu/tests/networking.scm (run-inetd-test, run-openvswitch-test) (run-dhcpd-test, run-tor-test, run-iptables-test, run-ipfs-test): Likewise. * gnu/tests/nfs.scm (run-nfs-test) (run-nfs-server-test, run-nfs-root-fs-test): Likewise. * gnu/tests/package-management.scm (run-nix-test): Likewise. * gnu/tests/reconfigure.scm (run-switch-to-system-test) (run-upgrade-services-test, run-install-bootloader-test): Likewise. * gnu/tests/rsync.scm (run-rsync-test): Likewise. * gnu/tests/security-token.scm (run-pcscd-test): Likewise. * gnu/tests/singularity.scm (run-singularity-test): Likewise. * gnu/tests/ssh.scm (run-ssh-test): Likewise. * gnu/tests/telephony.scm (run-jami-test): Likewise. * gnu/tests/version-control.scm (run-cgit-test): Likewise. (run-git-http-test, run-gitolite-test, run-gitile-test): Likewise. * gnu/tests/virtualization.scm (run-libvirt-test, run-childhurd-test): Likewise. * gnu/tests/web.scm (run-webserver-test, run-php-fpm-test) (run-hpcguix-web-server-test, run-tailon-test, run-patchwork-test): Likewise. Ludovic Courtès 2020-04-21tests: ssh: Explicitly wait for port 22....Previously we could occasionally try to connect before the server is actually listening, both for OpenSSH and Dropbear. * gnu/tests/ssh.scm (run-ssh-test)["wait for port 22"]: New test. Ludovic Courtès