summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-03-20 18:59:47 +0100
committerLudovic Courtès <ludo@gnu.org>2022-03-20 19:02:41 +0100
commit3748c32b13e5f05211477dd4bb8572e2856558ab (patch)
treea811adce52548dc238e79863e44ac21506d278c1
parent6da2a5a5655668f42ec5b26f875ddbc498e132b6 (diff)
downloadguix-3748c32b13e5f05211477dd4bb8572e2856558ab.tar.gz
home: import: Clarify alias parsing code.
* guix/scripts/home/import.scm (generate-bash-configuration+modules)
[bash-alias->pair]: Return #f on match failure.
[parse-aliases]: Adjust accordingly and use 'match'.
Remove 'filter' call.
-rw-r--r--guix/scripts/home/import.scm20
1 files changed, 11 insertions, 9 deletions
diff --git a/guix/scripts/home/import.scm b/guix/scripts/home/import.scm
index f01a98bc55..575fe8f688 100644
--- a/guix/scripts/home/import.scm
+++ b/guix/scripts/home/import.scm
@@ -65,17 +65,19 @@ FILE-NAME with \"-\", and return the basename of it."
 
   (define (bash-alias->pair line)
     (match (regexp-exec alias-rx line)
-      (#f '())
+      (#f #f)
       (matched
        `(,(match:substring matched 1) . ,(match:substring matched 2)))))
 
   (define (parse-aliases input)
-    (let loop ((line (read-line input))
-               (result '()))
-      (if (eof-object? line)
-          (reverse result)
-          (loop (read-line input)
-                (cons (bash-alias->pair line) result)))))
+    (let loop ((result '()))
+      (match (read-line input)
+        ((? eof-object?)
+         (reverse result))
+        (line
+         (match (bash-alias->pair line)
+           (#f    (loop result))
+           (alias (loop (cons alias result))))))))
 
   (let ((rc (destination-append ".bashrc"))
         (profile (destination-append ".bash_profile"))
@@ -85,9 +87,9 @@ FILE-NAME with \"-\", and return the basename of it."
                 ,@(if (file-exists? rc)
                       `((aliases
                          ',(let* ((port (open-pipe* OPEN_READ "bash" "-i" "-c" "alias"))
-                               (alist (parse-aliases port)))
+                                  (alist (parse-aliases port)))
                            (close-port port)
-                           (filter (negate null?) alist))))
+                           alist)))
                       '())
                 ,@(if (file-exists? rc)
                       `((bashrc