aboutsummaryrefslogtreecommitdiff
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
guix-3748c32b13e5f05211477dd4bb8572e2856558ab.zip
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