[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
08/09: home: import: Properly parse aliases that contain quotes.
From: |
guix-commits |
Subject: |
08/09: home: import: Properly parse aliases that contain quotes. |
Date: |
Sun, 20 Mar 2022 14:06:51 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 6da2a5a5655668f42ec5b26f875ddbc498e132b6
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Sun Mar 20 18:56:46 2022 +0100
home: import: Properly parse aliases that contain quotes.
* guix/scripts/home/import.scm (generate-bash-configuration+modules):
Define 'alias-rx'.
[bash-alias->pair]: Use it.
* tests/home-import.scm (match-home-environment-bash-service-with-alias):
New variable.
("manifest->code: Bash service with aliases"): New test.
---
guix/scripts/home/import.scm | 15 +++++++++------
tests/home-import.scm | 31 +++++++++++++++++++++++++++++++
2 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/guix/scripts/home/import.scm b/guix/scripts/home/import.scm
index 15bd3140ed..f01a98bc55 100644
--- a/guix/scripts/home/import.scm
+++ b/guix/scripts/home/import.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
-;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se>
;;;
;;; This file is part of GNU Guix.
@@ -60,12 +60,15 @@ FILE-NAME with \"-\", and return the basename of it."
(define (destination-append path)
(string-append destination-directory "/" path))
+ (define alias-rx
+ (make-regexp "^alias ([^=]+)=[\"'](.+)[\"']$"))
+
(define (bash-alias->pair line)
- (if (string-prefix? "alias" line)
- (let ((matched (string-match "alias (.+)=\"?'?([^\"']+)\"?'?" line)))
- `(,(match:substring matched 1) . ,(match:substring matched 2)))
- '()))
-
+ (match (regexp-exec alias-rx line)
+ (#f '())
+ (matched
+ `(,(match:substring matched 1) . ,(match:substring matched 2)))))
+
(define (parse-aliases input)
(let loop ((line (read-line input))
(result '()))
diff --git a/tests/home-import.scm b/tests/home-import.scm
index 6d373acf79..ca8aa95431 100644
--- a/tests/home-import.scm
+++ b/tests/home-import.scm
@@ -158,6 +158,29 @@ corresponding file."
('list ('local-file "/tmp/guix-config/.bashrc"
"bashrc"))))))))))
+(define-home-environment-matcher match-home-environment-bash-service-with-alias
+ ('begin
+ ('use-modules
+ ('gnu 'home)
+ ('gnu 'packages)
+ ('gnu 'services)
+ ('guix 'gexp)
+ ('gnu 'home 'services 'shells))
+ ('home-environment
+ ('packages
+ ('map ('compose 'list 'specification->package+output)
+ ('list)))
+ ('services
+ ('list ('service
+ 'home-bash-service-type
+ ('home-bash-configuration
+ ('aliases
+ ('quote (("grep" . "grep
--exclude-from=\"$HOME/.grep-exclude\"")
+ ("ls" . "ls -p"))))
+ ('bashrc
+ ('list ('local-file "/tmp/guix-config/.bashrc"
+ "bashrc"))))))))))
+
(test-assert "manifest->code: No services"
(eval-test-with-home-environment
@@ -187,4 +210,12 @@ corresponding file."
(make-manifest '())
match-home-environment-bash-service))
+(test-assert "manifest->code: Bash service with aliases"
+ (eval-test-with-home-environment
+ '((".bashrc"
+ . "# Aliases
+alias ls=\"ls -p\"; alias grep='grep
--exclude-from=\"$HOME/.grep-exclude\"'\n"))
+ (make-manifest '())
+ match-home-environment-bash-service-with-alias))
+
(test-end "home-import")
- branch master updated (10d865aa92 -> 3748c32b13), guix-commits, 2022/03/20
- 01/09: home: symlink-manager: Use existing home-directory symbol., guix-commits, 2022/03/20
- 09/09: home: import: Clarify alias parsing code., guix-commits, 2022/03/20
- 03/09: home: Explicitly connect home-file and symlink-manager services., guix-commits, 2022/03/20
- 06/09: home: Migrate fountutils and xdg modules to xdg-configuration-files., guix-commits, 2022/03/20
- 08/09: home: import: Properly parse aliases that contain quotes.,
guix-commits <=
- 04/09: home: Add home-xdg-configuration-files service., guix-commits, 2022/03/20
- 07/09: home: symlink-manager: Respect XDG_CONFIG_HOME during activation., guix-commits, 2022/03/20
- 02/09: home: symlink-manager: Add missing 'done' word in message., guix-commits, 2022/03/20
- 05/09: home: shells: Migrate zsh to xdg-configuration-files., guix-commits, 2022/03/20