summary refs log tree commit diff
path: root/guix/channels.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-01-10 21:51:18 +0100
committerLudovic Courtès <ludo@gnu.org>2021-02-01 17:32:35 +0100
commit60d72f536437bcef2a4e02faa1fe0c8076049fcc (patch)
tree77380eb1131be04537c3c69cfeb5a8addd4de62f /guix/channels.scm
parent1b88b7bad297a97bbbe5334eacb501aadc8ddf8a (diff)
downloadguix-60d72f536437bcef2a4e02faa1fe0c8076049fcc.tar.gz
channels: Add 'channel->code'.
* guix/channels.scm (channel->code): New procedure, taken from...
* guix/scripts/describe.scm (channel->sexp): ... here.
Adjust callers accordingly.
Diffstat (limited to 'guix/channels.scm')
-rw-r--r--guix/channels.scm19
1 files changed, 19 insertions, 0 deletions
diff --git a/guix/channels.scm b/guix/channels.scm
index 743b4a25b7..cdef77637d 100644
--- a/guix/channels.scm
+++ b/guix/channels.scm
@@ -92,6 +92,7 @@
 
             profile-channels
             manifest-entry-channel
+            channel->code
 
             channel-news-entry?
             channel-news-entry-commit
@@ -957,6 +958,24 @@ PROFILE is not a profile created by 'guix pull', return the empty list."
               (reverse
                (manifest-entries (profile-manifest profile)))))
 
+(define* (channel->code channel #:key (include-introduction? #t))
+  "Return code (an sexp) to build CHANNEL.  When INCLUDE-INTRODUCTION? is
+true, include its introduction, if any."
+  (let ((intro (and include-introduction?
+                    (channel-introduction channel))))
+    `(channel
+      (name ',(channel-name channel))
+      (url ,(channel-url channel))
+      (commit ,(channel-commit channel))
+      ,@(if intro
+            `((introduction (make-channel-introduction
+                             ,(channel-introduction-first-signed-commit intro)
+                             (openpgp-fingerprint
+                              ,(openpgp-format-fingerprint
+                                (channel-introduction-first-commit-signer
+                                 intro))))))
+            '()))))
+
 
 ;;;
 ;;; News.