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
'>about -rw-r--r--agda.scm6568logplainabout -rw-r--r--aidc.scm10203logplainabout -rw-r--r--algebra.scm72100logplainabout -rw-r--r--android.scm50590logplainabout -rw-r--r--animation.scm19902logplainabout -rw-r--r--anthy.scm2879logplainabout -rw-r--r--antivirus.scm7295logplainabout -rw-r--r--apl.scm2193logplainabout -rw-r--r--apr.scm4258logplainabout -rw-r--r--arcan.scm11139logplainabout -rw-r--r--aspell.scm20776logplainabout -rw-r--r--assembly.scm21458logplainabout -rw-r--r--astronomy.scm51055logplainabout -rw-r--r--attr.scm3492logplainabout -rw-r--r--audio.scm214129logplainabout -rw-r--r--augeas.scm2617logplainabout -rw-r--r--authentication.scm6796logplainabout -rw-r--r--autogen.scm3153logplainabout -rw-r--r--autotools.scm27096logplainabout d---------aux-files336logplain -rw-r--r--avahi.scm5706logplainabout -rw-r--r--avr.scm7769logplainabout -rw-r--r--axoloti.scm29334logplainabout -rw-r--r--backup.scm51021logplainabout -rw-r--r--base.scm62895logplainabout -rw-r--r--bash.scm19472logplainabout -rw-r--r--batik.scm8758logplainabout -rw-r--r--bdw-gc.scm5914logplainabout -rw-r--r--benchmark.scm16508logplainabout -rw-r--r--bioconductor.scm524494logplainabout -rw-r--r--bioinformatics.scm646179logplainabout -rw-r--r--bison.scm3264logplainabout -rw-r--r--bittorrent.scm24797logplainabout -rw-r--r--boost.scm20568logplainabout -rw-r--r--bootloaders.scm58380logplainabout -rw-r--r--bootstrap.scm45634logplainabout -rw-r--r--browser-extensions.scm4487logplainabout -rw-r--r--build-tools.scm23625logplainabout -rw-r--r--busybox.scm7282logplainabout -rw-r--r--c.scm36213logplainabout -rw-r--r--calcurse.scm3469logplainabout -rw-r--r--calendar.scm18319logplainabout -rw-r--r--ccache.scm3106logplainabout -rw-r--r--cdrom.scm42425logplainabout -rw-r--r--cedille.scm5388logplainabout -rw-r--r--certs.scm12736logplainabout -rw-r--r--check.scm117085logplainabout -rw-r--r--chemistry.scm27126logplainabout -rw-r--r--chez.scm28728logplainabout -rw-r--r--chicken.scm10435logplainabout -rw-r--r--chromium.scm43862logplainabout -rw-r--r--ci.scm12996logplainabout -rw-r--r--cinnamon.scm2923logplainabout -rw-r--r--clojure.scm23415logplainabout -rw-r--r--cluster.scm11186logplainabout -rw-r--r--cmake.scm18162logplainabout -rw-r--r--cobol.scm3394logplainabout -rw-r--r--code.scm39954logplainabout -rw-r--r--commencement.scm161041logplainabout -rw-r--r--compression.scm116202logplainabout -rw-r--r--compton.scm5565logplainabout -rw-r--r--configuration-management.scm4326logplainabout -rw-r--r--conky.scm3453logplainabout