* [bug#33448] [PATCH] describe: Fix 'format' option.
@ 2018-11-20 22:26 Oleg Pykhalov
2018-11-21 7:00 ` [bug#33448] [PATCH] describe: Add json format Oleg Pykhalov
` (2 more replies)
0 siblings, 3 replies; 17+ messages in thread
From: Oleg Pykhalov @ 2018-11-20 22:26 UTC (permalink / raw)
To: 33448
Fix ‘guix describe’ ignores ‘--format=FORMAT’ option.
* guix/scripts/describe.scm (%options): Fix 'format' option.
---
guix/scripts/describe.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm
index e59502076..d3203e992 100644
--- a/guix/scripts/describe.scm
+++ b/guix/scripts/describe.scm
@@ -40,7 +40,7 @@
(lambda (opt name arg result)
(unless (member arg '("human" "channels"))
(leave (G_ "~a: unsupported output format~%") arg))
- (alist-cons 'format 'channels result)))
+ (alist-cons 'format (string->symbol arg) result)))
(option '(#\h "help") #f #f
(lambda args
(show-help)
--
2.19.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH] describe: Add json format.
2018-11-20 22:26 [bug#33448] [PATCH] describe: Fix 'format' option Oleg Pykhalov
@ 2018-11-21 7:00 ` Oleg Pykhalov
2018-11-21 10:53 ` Ludovic Courtès
2018-11-21 10:47 ` [bug#33448] [PATCH] describe: Fix 'format' option Ludovic Courtès
2018-11-21 14:17 ` [bug#33448] [PATCH 1/3] describe: Use a procedure to format output Oleg Pykhalov
2 siblings, 1 reply; 17+ messages in thread
From: Oleg Pykhalov @ 2018-11-21 7:00 UTC (permalink / raw)
To: 33448
* guix/scripts/describe.scm: Add json format.
---
guix/scripts/describe.scm | 69 +++++++++++++++++++++++++--------------
1 file changed, 44 insertions(+), 25 deletions(-)
diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm
index d3203e992..53195b423 100644
--- a/guix/scripts/describe.scm
+++ b/guix/scripts/describe.scm
@@ -23,6 +23,7 @@
#:use-module (guix profiles)
#:use-module ((guix scripts pull) #:select (display-profile-content))
#:use-module (git)
+ #:use-module (json)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-37)
#:use-module (ice-9 match)
@@ -38,7 +39,7 @@
;; Specifications of the command-line options.
(list (option '(#\f "format") #t #f
(lambda (opt name arg result)
- (unless (member arg '("human" "channels"))
+ (unless (member arg '("human" "channels" "json"))
(leave (G_ "~a: unsupported output format~%") arg))
(alist-cons 'format (string->symbol arg) result)))
(option '(#\h "help") #f #f
@@ -101,7 +102,12 @@ within a Git checkout."
(pretty-print `(list (channel
(name 'guix)
(url ,(dirname directory))
- (commit ,commit))))))
+ (commit ,commit)))))
+ ('json
+ (display (scm->json-string `((name . guix)
+ (url . ,(dirname directory))
+ (commit . ,commit))))
+ (newline)))
(display-package-search-path fmt)))
(define (display-profile-info profile fmt)
@@ -110,34 +116,47 @@ in the format specified by FMT."
(define number
(generation-number profile))
+ (define (channels format)
+ (map (lambda (entry)
+ (match (assq 'source (manifest-entry-properties entry))
+ (('source ('repository ('version 0)
+ ('url url)
+ ('branch branch)
+ ('commit commit)
+ _ ...))
+ (case format
+ ((scm)
+ `(channel (name ',(string->symbol
+ (manifest-entry-name entry)))
+ (url ,url)
+ (commit ,commit)))
+ ((json)
+ `((name . ,(string->symbol
+ (manifest-entry-name entry)))
+ (url . ,url)
+ (commit . ,commit)))))
+
+ ;; Pre-0.15.0 Guix does not provide that information,
+ ;; so there's not much we can do in that case.
+ (_ '???)))
+
+ ;; Show most recently installed packages last.
+ (reverse
+ (manifest-entries
+ (profile-manifest
+ (if (zero? number)
+ profile
+ (generation-file-name profile number)))))))
+
(match fmt
('human
(display-profile-content profile number))
('channels
(pretty-print
- `(list ,@(map (lambda (entry)
- (match (assq 'source (manifest-entry-properties entry))
- (('source ('repository ('version 0)
- ('url url)
- ('branch branch)
- ('commit commit)
- _ ...))
- `(channel (name ',(string->symbol
- (manifest-entry-name entry)))
- (url ,url)
- (commit ,commit)))
-
- ;; Pre-0.15.0 Guix does not provide that information,
- ;; so there's not much we can do in that case.
- (_ '???)))
-
- ;; Show most recently installed packages last.
- (reverse
- (manifest-entries
- (profile-manifest
- (if (zero? number)
- profile
- (generation-file-name profile number))))))))))
+ `(list ,@(channels 'scm))))
+ ('json
+ (display (scm->json-string (channels 'json)))
+ (newline)))
(display-package-search-path fmt))
\f
--
2.19.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH] describe: Fix 'format' option.
2018-11-20 22:26 [bug#33448] [PATCH] describe: Fix 'format' option Oleg Pykhalov
2018-11-21 7:00 ` [bug#33448] [PATCH] describe: Add json format Oleg Pykhalov
@ 2018-11-21 10:47 ` Ludovic Courtès
2018-11-21 11:46 ` Oleg Pykhalov
2018-11-21 14:17 ` [bug#33448] [PATCH 1/3] describe: Use a procedure to format output Oleg Pykhalov
2 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2018-11-21 10:47 UTC (permalink / raw)
To: Oleg Pykhalov; +Cc: 33448
Oleg Pykhalov <go.wigust@gmail.com> skribis:
> Fix ‘guix describe’ ignores ‘--format=FORMAT’ option.
>
> * guix/scripts/describe.scm (%options): Fix 'format' option.
Oops, good catch. LGTM!
Ludo’.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH] describe: Add json format.
2018-11-21 7:00 ` [bug#33448] [PATCH] describe: Add json format Oleg Pykhalov
@ 2018-11-21 10:53 ` Ludovic Courtès
2018-11-21 14:10 ` Oleg Pykhalov
0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2018-11-21 10:53 UTC (permalink / raw)
To: Oleg Pykhalov; +Cc: 33448
Oleg Pykhalov <go.wigust@gmail.com> skribis:
> * guix/scripts/describe.scm: Add json format.
Please describe the modified and added variables/procedures.
> + (define (channels format)
> + (map (lambda (entry)
> + (match (assq 'source (manifest-entry-properties entry))
> + (('source ('repository ('version 0)
> + ('url url)
> + ('branch branch)
> + ('commit commit)
> + _ ...))
> + (case format
> + ((scm)
> + `(channel (name ',(string->symbol
> + (manifest-entry-name entry)))
> + (url ,url)
> + (commit ,commit)))
> + ((json)
> + `((name . ,(string->symbol
> + (manifest-entry-name entry)))
> + (url . ,url)
> + (commit . ,commit)))))
> +
> + ;; Pre-0.15.0 Guix does not provide that information,
> + ;; so there's not much we can do in that case.
> + (_ '???)))
> +
> + ;; Show most recently installed packages last.
> + (reverse
> + (manifest-entries
> + (profile-manifest
> + (if (zero? number)
> + profile
> + (generation-file-name profile number)))))))
How about turning this into a list of <channel> objects, and then,
separately have ‘channels->sexp’ and ‘channels->json’? That would avoid
having dealing with the format in two different places.
Also, could you mention the new format in the manual?
Last question: what use case do you have in mind regarding the JSON
format? I’m asking because we don’t have tools that can consume it so
far.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH] describe: Fix 'format' option.
2018-11-21 10:47 ` [bug#33448] [PATCH] describe: Fix 'format' option Ludovic Courtès
@ 2018-11-21 11:46 ` Oleg Pykhalov
0 siblings, 0 replies; 17+ messages in thread
From: Oleg Pykhalov @ 2018-11-21 11:46 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33448
[-- Attachment #1: Type: text/plain, Size: 314 bytes --]
ludo@gnu.org (Ludovic Courtès) writes:
> Oleg Pykhalov <go.wigust@gmail.com> skribis:
>
>> Fix ‘guix describe’ ignores ‘--format=FORMAT’ option.
>>
>> * guix/scripts/describe.scm (%options): Fix 'format' option.
>
> Oops, good catch. LGTM!
Pushed as 3dd28aa37cc3f3a6bbb5f7f8d9fb49cc457b0c10
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH] describe: Add json format.
2018-11-21 10:53 ` Ludovic Courtès
@ 2018-11-21 14:10 ` Oleg Pykhalov
2018-11-21 21:36 ` Ludovic Courtès
0 siblings, 1 reply; 17+ messages in thread
From: Oleg Pykhalov @ 2018-11-21 14:10 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33448
[-- Attachment #1: Type: text/plain, Size: 1744 bytes --]
Hello Ludovic,
Apologies for created previously separate bug reports of same patch
series.
ludo@gnu.org (Ludovic Courtès) writes:
> Oleg Pykhalov <go.wigust@gmail.com> skribis:
>
>> * guix/scripts/describe.scm: Add json format.
>
> Please describe the modified and added variables/procedures.
>
>> + (define (channels format)
>> + (map (lambda (entry)
>> + …
>> + (generation-file-name profile number)))))))
Ups, I'll do this in followign patch series.
> How about turning this into a list of <channel> objects, and then,
> separately have ‘channels->sexp’ and ‘channels->json’? That would avoid
> having dealing with the format in two different places.
>
> Also, could you mention the new format in the manual?
>
> Last question: what use case do you have in mind regarding the JSON
> format? I’m asking because we don’t have tools that can consume it so
> far.
Well, I wanted to get a command line way to select things in ‘guix
channel’ output, e.g. to get a current ‘guix’ channel commit:
--8<---------------cut here---------------start------------->8---
./pre-inst-env guix describe --profile=$HOME/.config/guix/current --format=json | jq --raw-output 'map(select(.name == "guix"))'[0].commit
--8<---------------cut here---------------end--------------->8---
I didn't think that ‘recsel’ actually could be used in the same way:
--8<---------------cut here---------------start------------->8---
./pre-inst-env guix describe --profile=$HOME/.config/guix/current --format=recutils | recsel -e 'name = "guix"' -P commit
--8<---------------cut here---------------end--------------->8---
I'll send new patch series following current message.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH 1/3] describe: Use a procedure to format output.
2018-11-20 22:26 [bug#33448] [PATCH] describe: Fix 'format' option Oleg Pykhalov
2018-11-21 7:00 ` [bug#33448] [PATCH] describe: Add json format Oleg Pykhalov
2018-11-21 10:47 ` [bug#33448] [PATCH] describe: Fix 'format' option Ludovic Courtès
@ 2018-11-21 14:17 ` Oleg Pykhalov
2018-11-21 14:17 ` [bug#33448] [PATCH 2/3] describe: Add json format Oleg Pykhalov
` (2 more replies)
2 siblings, 3 replies; 17+ messages in thread
From: Oleg Pykhalov @ 2018-11-21 14:17 UTC (permalink / raw)
To: 33448
* guix/channels.scm (channel->sexp): New procedure.
* guix/scripts/describe.scm (display-checkout-info, display-profile-info): Use
this.
---
guix/channels.scm | 9 +++++++
guix/scripts/describe.scm | 57 ++++++++++++++++++++-------------------
2 files changed, 38 insertions(+), 28 deletions(-)
diff --git a/guix/channels.scm b/guix/channels.scm
index 82389eb58..bfdbf470b 100644
--- a/guix/channels.scm
+++ b/guix/channels.scm
@@ -39,6 +39,7 @@
channel-commit
channel-location
+ channel->sexp
%default-channels
channel-instance?
@@ -85,6 +86,14 @@
"Return true if CHANNEL is the 'guix' channel."
(eq? 'guix (channel-name channel)))
+(define channel->sexp
+ (match-lambda
+ (($ <channel> name url branch commit location)
+ `(channel
+ (name ,name)
+ (url ,url)
+ (commit ,commit)))))
+
(define-record-type <channel-instance>
(channel-instance channel commit checkout)
channel-instance?
diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm
index d817d7f7c..6a30d19b1 100644
--- a/guix/scripts/describe.scm
+++ b/guix/scripts/describe.scm
@@ -18,6 +18,7 @@
(define-module (guix scripts describe)
#:use-module ((guix ui) #:hide (display-profile-content))
+ #:use-module (guix channels)
#:use-module (guix scripts)
#:use-module (guix describe)
#:use-module (guix profiles)
@@ -104,10 +105,9 @@ within a Git checkout."
(format #t (G_ " branch: ~a~%") (reference-shorthand head))
(format #t (G_ " commit: ~a~%") commit))
('channels
- (pretty-print `(list (channel
- (name 'guix)
- (url ,(dirname directory))
- (commit ,commit))))))
+ (pretty-print (channel->sexp (channel (name 'guix)
+ (url (dirname directory))
+ (commit commit))))))
(display-package-search-path fmt)))
(define (display-profile-info profile fmt)
@@ -116,34 +116,35 @@ in the format specified by FMT."
(define number
(generation-number profile))
+ (define (channels)
+ (map (lambda (entry)
+ (match (assq 'source (manifest-entry-properties entry))
+ (('source ('repository ('version 0)
+ ('url url)
+ ('branch branch)
+ ('commit commit)
+ _ ...))
+ (channel (name (string->symbol (manifest-entry-name entry)))
+ (url url)
+ (commit commit)))
+
+ ;; Pre-0.15.0 Guix does not provide that information,
+ ;; so there's not much we can do in that case.
+ (_ '???)))
+
+ ;; Show most recently installed packages last.
+ (reverse
+ (manifest-entries
+ (profile-manifest
+ (if (zero? number)
+ profile
+ (generation-file-name profile number)))))))
+
(match fmt
('human
(display-profile-content profile number))
('channels
- (pretty-print
- `(list ,@(map (lambda (entry)
- (match (assq 'source (manifest-entry-properties entry))
- (('source ('repository ('version 0)
- ('url url)
- ('branch branch)
- ('commit commit)
- _ ...))
- `(channel (name ',(string->symbol
- (manifest-entry-name entry)))
- (url ,url)
- (commit ,commit)))
-
- ;; Pre-0.15.0 Guix does not provide that information,
- ;; so there's not much we can do in that case.
- (_ '???)))
-
- ;; Show most recently installed packages last.
- (reverse
- (manifest-entries
- (profile-manifest
- (if (zero? number)
- profile
- (generation-file-name profile number))))))))))
+ (pretty-print (map channel->sexp (channels)))))
(display-package-search-path fmt))
\f
--
2.19.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH 2/3] describe: Add json format.
2018-11-21 14:17 ` [bug#33448] [PATCH 1/3] describe: Use a procedure to format output Oleg Pykhalov
@ 2018-11-21 14:17 ` Oleg Pykhalov
2018-11-21 21:33 ` Ludovic Courtès
2018-11-21 14:17 ` [bug#33448] [PATCH 3/3] describe: Add recutils format Oleg Pykhalov
2018-11-21 21:31 ` [bug#33448] [PATCH 1/3] describe: Use a procedure to format output Ludovic Courtès
2 siblings, 1 reply; 17+ messages in thread
From: Oleg Pykhalov @ 2018-11-21 14:17 UTC (permalink / raw)
To: 33448
* guix/channels.scm (channel->json): New procedure.
* guix/scripts/describe.scm (%options): Add 'json' option.
(display-checkout-info, display-profile-info): Use 'channel->json'.
* doc/guix.texi (Invoking guix describe): Document this.
---
doc/guix.texi | 5 ++++-
guix/channels.scm | 12 ++++++++++++
guix/scripts/describe.scm | 13 ++++++++++---
3 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 082e81bf7..3413eb30f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3273,7 +3273,10 @@ produce human-readable output;
@item channels
produce a list of channel specifications that can be passed to @command{guix
pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking
-guix pull}).
+guix pull});
+@item json
+@cindex JSON
+produce a list of channel specifications in JSON format.
@end table
@item --profile=@var{profile}
diff --git a/guix/channels.scm b/guix/channels.scm
index bfdbf470b..9f2c9103e 100644
--- a/guix/channels.scm
+++ b/guix/channels.scm
@@ -26,6 +26,7 @@
#:use-module (guix derivations)
#:use-module (guix store)
#:use-module (guix i18n)
+ #:use-module (json)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-11)
@@ -39,7 +40,9 @@
channel-commit
channel-location
+ channel->json
channel->sexp
+
%default-channels
channel-instance?
@@ -94,6 +97,15 @@
(url ,url)
(commit ,commit)))))
+(define channel->json
+ (match-lambda
+ (($ <channel> name url branch commit location)
+ (scm->json-string
+ (list
+ (cons 'name name)
+ (cons 'url url)
+ (cons 'commit commit))))))
+
(define-record-type <channel-instance>
(channel-instance channel commit checkout)
channel-instance?
diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm
index 6a30d19b1..d7e276769 100644
--- a/guix/scripts/describe.scm
+++ b/guix/scripts/describe.scm
@@ -39,7 +39,7 @@
;; Specifications of the command-line options.
(list (option '(#\f "format") #t #f
(lambda (opt name arg result)
- (unless (member arg '("human" "channels"))
+ (unless (member arg '("human" "channels" "json"))
(leave (G_ "~a: unsupported output format~%") arg))
(alist-cons 'format (string->symbol arg) result)))
(option '(#\p "profile") #t #f
@@ -107,7 +107,12 @@ within a Git checkout."
('channels
(pretty-print (channel->sexp (channel (name 'guix)
(url (dirname directory))
- (commit commit))))))
+ (commit commit)))))
+ ('json
+ (display (channel->json (channel (name 'guix)
+ (url (dirname directory))
+ (commit commit))))
+ (newline)))
(display-package-search-path fmt)))
(define (display-profile-info profile fmt)
@@ -144,7 +149,9 @@ in the format specified by FMT."
('human
(display-profile-content profile number))
('channels
- (pretty-print (map channel->sexp (channels)))))
+ (pretty-print (map channel->sexp (channels))))
+ ('json
+ (format #t "[~a]~%" (string-join (map channel->json (channels)) ","))))
(display-package-search-path fmt))
\f
--
2.19.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH 3/3] describe: Add recutils format.
2018-11-21 14:17 ` [bug#33448] [PATCH 1/3] describe: Use a procedure to format output Oleg Pykhalov
2018-11-21 14:17 ` [bug#33448] [PATCH 2/3] describe: Add json format Oleg Pykhalov
@ 2018-11-21 14:17 ` Oleg Pykhalov
2018-11-21 21:34 ` Ludovic Courtès
2018-11-21 21:31 ` [bug#33448] [PATCH 1/3] describe: Use a procedure to format output Ludovic Courtès
2 siblings, 1 reply; 17+ messages in thread
From: Oleg Pykhalov @ 2018-11-21 14:17 UTC (permalink / raw)
To: 33448
* guix/channels.scm (channel->recutils): New procedure.
* guix/scripts/describe.scm (%options): Add 'recutils' option.
(display-checkout-info, display-profile-info): Use 'channel->recutils'.
* doc/guix.texi (Invoking guix describe): Document this.
---
doc/guix.texi | 4 +++-
guix/channels.scm | 8 ++++++++
guix/scripts/describe.scm | 18 +++++++++++++++---
3 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 3413eb30f..44594d168 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3276,7 +3276,9 @@ pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking
guix pull});
@item json
@cindex JSON
-produce a list of channel specifications in JSON format.
+produce a list of channel specifications in JSON format;
+@item recutils
+produce a list of channel specifications in Recutils format.
@end table
@item --profile=@var{profile}
diff --git a/guix/channels.scm b/guix/channels.scm
index 9f2c9103e..ed9bc67c3 100644
--- a/guix/channels.scm
+++ b/guix/channels.scm
@@ -41,6 +41,7 @@
channel-location
channel->json
+ channel->recutils
channel->sexp
%default-channels
@@ -106,6 +107,13 @@
(cons 'url url)
(cons 'commit commit))))))
+(define (channel->recutils c port)
+ (match c
+ (($ <channel> name url branch commit location)
+ (format port "name: ~a~%" name)
+ (format port "url: ~a~%" url)
+ (format port "commit: ~a~%" commit))))
+
(define-record-type <channel-instance>
(channel-instance channel commit checkout)
channel-instance?
diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm
index d7e276769..90365b7ae 100644
--- a/guix/scripts/describe.scm
+++ b/guix/scripts/describe.scm
@@ -39,7 +39,7 @@
;; Specifications of the command-line options.
(list (option '(#\f "format") #t #f
(lambda (opt name arg result)
- (unless (member arg '("human" "channels" "json"))
+ (unless (member arg '("human" "channels" "json" "recutils"))
(leave (G_ "~a: unsupported output format~%") arg))
(alist-cons 'format (string->symbol arg) result)))
(option '(#\p "profile") #t #f
@@ -112,7 +112,12 @@ within a Git checkout."
(display (channel->json (channel (name 'guix)
(url (dirname directory))
(commit commit))))
- (newline)))
+ (newline))
+ ('recutils
+ (channel->recutils (channel (name 'guix)
+ (url (dirname directory))
+ (commit commit))
+ #t)))
(display-package-search-path fmt)))
(define (display-profile-info profile fmt)
@@ -151,7 +156,14 @@ in the format specified by FMT."
('channels
(pretty-print (map channel->sexp (channels))))
('json
- (format #t "[~a]~%" (string-join (map channel->json (channels)) ","))))
+ (format #t "[~a]~%" (string-join (map channel->json (channels)) ",")))
+ ('recutils
+ (format #t "~{~a~%~}"
+ (map (lambda (channel)
+ (with-output-to-string
+ (lambda ()
+ (channel->recutils channel (current-output-port)))))
+ (channels)))))
(display-package-search-path fmt))
\f
--
2.19.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH 1/3] describe: Use a procedure to format output.
2018-11-21 14:17 ` [bug#33448] [PATCH 1/3] describe: Use a procedure to format output Oleg Pykhalov
2018-11-21 14:17 ` [bug#33448] [PATCH 2/3] describe: Add json format Oleg Pykhalov
2018-11-21 14:17 ` [bug#33448] [PATCH 3/3] describe: Add recutils format Oleg Pykhalov
@ 2018-11-21 21:31 ` Ludovic Courtès
2018-11-22 12:54 ` Oleg Pykhalov
2 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2018-11-21 21:31 UTC (permalink / raw)
To: Oleg Pykhalov; +Cc: 33448
Hi,
Oleg Pykhalov <go.wigust@gmail.com> skribis:
> * guix/channels.scm (channel->sexp): New procedure.
> * guix/scripts/describe.scm (display-checkout-info, display-profile-info): Use
> this.
[...]
> + (define (channels)
s/define (channels)/define channels/ :-)
> + (map (lambda (entry)
> + (match (assq 'source (manifest-entry-properties entry))
> + (('source ('repository ('version 0)
> + ('url url)
> + ('branch branch)
> + ('commit commit)
> + _ ...))
> + (channel (name (string->symbol (manifest-entry-name entry)))
> + (url url)
> + (commit commit)))
> +
> + ;; Pre-0.15.0 Guix does not provide that information,
> + ;; so there's not much we can do in that case.
> + (_ '???)))
Maybe return, say: (channel (name 'guix)(url "?")(commit "?")).
This would avoid weird type errors.
> + (pretty-print (map channel->sexp (channels)))))
I think it should be:
(pretty-print `(list ,@(map channel->sexp channels)))
right?
OK with these changes, thanks!
Ludo’.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH 2/3] describe: Add json format.
2018-11-21 14:17 ` [bug#33448] [PATCH 2/3] describe: Add json format Oleg Pykhalov
@ 2018-11-21 21:33 ` Ludovic Courtès
2018-11-22 12:54 ` Oleg Pykhalov
0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2018-11-21 21:33 UTC (permalink / raw)
To: Oleg Pykhalov; +Cc: 33448
Oleg Pykhalov <go.wigust@gmail.com> skribis:
> * guix/channels.scm (channel->json): New procedure.
> * guix/scripts/describe.scm (%options): Add 'json' option.
> (display-checkout-info, display-profile-info): Use 'channel->json'.
> * doc/guix.texi (Invoking guix describe): Document this.
[...]
> +(define channel->json
> + (match-lambda
> + (($ <channel> name url branch commit location)
> + (scm->json-string
> + (list
> + (cons 'name name)
> + (cons 'url url)
> + (cons 'commit commit))))))
Since this is not a core feature of channels and add a dependency on
(json), what about moving this procedure to (guix scripts describe)?
(‘channel->sexp’ could got to (guix scripts describe) as well maybe; no
big deal.)
Otherwise LGTM!
Ludo’.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH 3/3] describe: Add recutils format.
2018-11-21 14:17 ` [bug#33448] [PATCH 3/3] describe: Add recutils format Oleg Pykhalov
@ 2018-11-21 21:34 ` Ludovic Courtès
0 siblings, 0 replies; 17+ messages in thread
From: Ludovic Courtès @ 2018-11-21 21:34 UTC (permalink / raw)
To: Oleg Pykhalov; +Cc: 33448
Oleg Pykhalov <go.wigust@gmail.com> skribis:
> * guix/channels.scm (channel->recutils): New procedure.
> * guix/scripts/describe.scm (%options): Add 'recutils' option.
> (display-checkout-info, display-profile-info): Use 'channel->recutils'.
> * doc/guix.texi (Invoking guix describe): Document this.
[...]
> +(define (channel->recutils c port)
> + (match c
> + (($ <channel> name url branch commit location)
> + (format port "name: ~a~%" name)
> + (format port "url: ~a~%" url)
> + (format port "commit: ~a~%" commit))))
Same thing here: I’d have a preference for moving it to (guix scripts
describe).
Otherwise LGTM, thanks!
Ludo’.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH] describe: Add json format.
2018-11-21 14:10 ` Oleg Pykhalov
@ 2018-11-21 21:36 ` Ludovic Courtès
0 siblings, 0 replies; 17+ messages in thread
From: Ludovic Courtès @ 2018-11-21 21:36 UTC (permalink / raw)
To: Oleg Pykhalov; +Cc: 33448
Oleg Pykhalov <go.wigust@gmail.com> skribis:
> ludo@gnu.org (Ludovic Courtès) writes:
[...]
>> Last question: what use case do you have in mind regarding the JSON
>> format? I’m asking because we don’t have tools that can consume it so
>> far.
>
> Well, I wanted to get a command line way to select things in ‘guix
> channel’ output, e.g. to get a current ‘guix’ channel commit:
>
> ./pre-inst-env guix describe --profile=$HOME/.config/guix/current --format=json | jq --raw-output 'map(select(.name == "guix"))'[0].commit
>
>
> I didn't think that ‘recsel’ actually could be used in the same way:
>
> ./pre-inst-env guix describe --profile=$HOME/.config/guix/current --format=recutils | recsel -e 'name = "guix"' -P commit
I see, that makes sense. It’s OK to have both JSON and recutils.
Thank you!
Ludo’.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH 1/3] describe: Use a procedure to format output.
2018-11-21 21:31 ` [bug#33448] [PATCH 1/3] describe: Use a procedure to format output Ludovic Courtès
@ 2018-11-22 12:54 ` Oleg Pykhalov
0 siblings, 0 replies; 17+ messages in thread
From: Oleg Pykhalov @ 2018-11-22 12:54 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33448
[-- Attachment #1: Type: text/plain, Size: 495 bytes --]
Hi,
ludo@gnu.org (Ludovic Courtès) writes:
> Oleg Pykhalov <go.wigust@gmail.com> skribis:
>
>> * guix/channels.scm (channel->sexp): New procedure.
>> * guix/scripts/describe.scm (display-checkout-info, display-profile-info): Use
>> this.
[…]
>> + (pretty-print (map channel->sexp (channels)))))
>
> I think it should be:
>
> (pretty-print `(list ,@(map channel->sexp channels)))
Ouch, ‘list’ in in 'display-checkout-info' should be too. Apologies.
Oleg.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH 2/3] describe: Add json format.
2018-11-21 21:33 ` Ludovic Courtès
@ 2018-11-22 12:54 ` Oleg Pykhalov
2018-11-22 16:53 ` Ludovic Courtès
0 siblings, 1 reply; 17+ messages in thread
From: Oleg Pykhalov @ 2018-11-22 12:54 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33448
[-- Attachment #1: Type: text/plain, Size: 927 bytes --]
Hi Ludovic,
Almost done with current patch series and only one question.
ludo@gnu.org (Ludovic Courtès) writes:
> Oleg Pykhalov <go.wigust@gmail.com> skribis:
>
>> * guix/channels.scm (channel->json): New procedure.
>> * guix/scripts/describe.scm (%options): Add 'json' option.
>> (display-checkout-info, display-profile-info): Use 'channel->json'.
>> * doc/guix.texi (Invoking guix describe): Document this.
>
> [...]
>
>> +(define channel->json
>> + (match-lambda
>> + (($ <channel> name url branch commit location)
>> + (scm->json-string
>> + (list
>> + (cons 'name name)
>> + (cons 'url url)
>> + (cons 'commit commit))))))
>
> Since this is not a core feature of channels and add a dependency on
> (json), what about moving this procedure to (guix scripts describe)?
<channel> should be exported in (guix channels) in this case. Is it OK?
[…]
Oleg.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH 2/3] describe: Add json format.
2018-11-22 12:54 ` Oleg Pykhalov
@ 2018-11-22 16:53 ` Ludovic Courtès
2018-11-22 18:23 ` Oleg Pykhalov
0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2018-11-22 16:53 UTC (permalink / raw)
To: Oleg Pykhalov; +Cc: 33448
Hi Oleg,
Oleg Pykhalov <go.wigust@gmail.com> skribis:
> Almost done with current patch series and only one question.
>
> ludo@gnu.org (Ludovic Courtès) writes:
>
>> Oleg Pykhalov <go.wigust@gmail.com> skribis:
>>
>>> * guix/channels.scm (channel->json): New procedure.
>>> * guix/scripts/describe.scm (%options): Add 'json' option.
>>> (display-checkout-info, display-profile-info): Use 'channel->json'.
>>> * doc/guix.texi (Invoking guix describe): Document this.
>>
>> [...]
>>
>>> +(define channel->json
>>> + (match-lambda
>>> + (($ <channel> name url branch commit location)
>>> + (scm->json-string
>>> + (list
>>> + (cons 'name name)
>>> + (cons 'url url)
>>> + (cons 'commit commit))))))
>>
>> Since this is not a core feature of channels and add a dependency on
>> (json), what about moving this procedure to (guix scripts describe)?
>
> <channel> should be exported in (guix channels) in this case. Is it OK?
No I think we should avoid exporting <channel>, but anyway we can write
this procedure as:
(lambda (channel)
(scm->json-string `((name . ,(channel-name channel)) …)))
Ludo’.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [bug#33448] [PATCH 2/3] describe: Add json format.
2018-11-22 16:53 ` Ludovic Courtès
@ 2018-11-22 18:23 ` Oleg Pykhalov
0 siblings, 0 replies; 17+ messages in thread
From: Oleg Pykhalov @ 2018-11-22 18:23 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33448, 33448-done
[-- Attachment #1: Type: text/plain, Size: 756 bytes --]
ludo@gnu.org (Ludovic Courtès) writes:
[…]
>> <channel> should be exported in (guix channels) in this case. Is it OK?
>
> No I think we should avoid exporting <channel>, but anyway we can write
> this procedure as:
>
> (lambda (channel)
> (scm->json-string `((name . ,(channel-name channel)) …)))
Oh, sure. Thank you for a reminder.
Pushed as:
--8<---------------cut here---------------start------------->8---
85e9c4b91990008f2b6b07c5de6f14427d7c3a06 describe: Add recutils format.
81a40ee0cb925bc39e3044bddcfdd38ddb04f04d describe: Add json format.
8548f995494d8d6358e6a8d7bc3b3bb5a0cbecb5 describe: Use a procedure to format output.
--8<---------------cut here---------------end--------------->8---
Thanks,
Oleg.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2018-11-22 18:25 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-20 22:26 [bug#33448] [PATCH] describe: Fix 'format' option Oleg Pykhalov
2018-11-21 7:00 ` [bug#33448] [PATCH] describe: Add json format Oleg Pykhalov
2018-11-21 10:53 ` Ludovic Courtès
2018-11-21 14:10 ` Oleg Pykhalov
2018-11-21 21:36 ` Ludovic Courtès
2018-11-21 10:47 ` [bug#33448] [PATCH] describe: Fix 'format' option Ludovic Courtès
2018-11-21 11:46 ` Oleg Pykhalov
2018-11-21 14:17 ` [bug#33448] [PATCH 1/3] describe: Use a procedure to format output Oleg Pykhalov
2018-11-21 14:17 ` [bug#33448] [PATCH 2/3] describe: Add json format Oleg Pykhalov
2018-11-21 21:33 ` Ludovic Courtès
2018-11-22 12:54 ` Oleg Pykhalov
2018-11-22 16:53 ` Ludovic Courtès
2018-11-22 18:23 ` Oleg Pykhalov
2018-11-21 14:17 ` [bug#33448] [PATCH 3/3] describe: Add recutils format Oleg Pykhalov
2018-11-21 21:34 ` Ludovic Courtès
2018-11-21 21:31 ` [bug#33448] [PATCH 1/3] describe: Use a procedure to format output Ludovic Courtès
2018-11-22 12:54 ` Oleg Pykhalov
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).