diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-03-20 18:59:47 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-03-20 19:02:41 +0100 |
commit | 3748c32b13e5f05211477dd4bb8572e2856558ab (patch) | |
tree | a811adce52548dc238e79863e44ac21506d278c1 | |
parent | 6da2a5a5655668f42ec5b26f875ddbc498e132b6 (diff) | |
download | guix-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.scm | 20 |
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 |