From 2cb5bf997bfa81df0290e0496a15f1f39a569e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20N=C3=A1jera?= Date: Thu, 5 May 2022 14:42:32 +0200 Subject: Import my guile libraries --- lib/guile/utils.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 lib/guile/utils.scm (limited to 'lib/guile/utils.scm') diff --git a/lib/guile/utils.scm b/lib/guile/utils.scm new file mode 100755 index 0000000..ad1b1ed --- /dev/null +++ b/lib/guile/utils.scm @@ -0,0 +1,27 @@ +(define-module (utils) + #:export (-> ->> expand-file)) + +(define-syntax -> + (syntax-rules () + ((_ value) value) + ((_ value (f1 . body) next ...) (-> (f1 value . body) next ...)) + ((_ value fun next ...) (-> (fun value) next ...)))) + +(define-syntax ->> + (syntax-rules () + ((_ value) value) + ((_ value (f ...) rest ...) (->> (f ... value) rest ...)) + ((_ value f rest ...) (->> (f value) rest ...)))) + +(define (expand-file f) + ;; https://irreal.org/blog/?p=83 + (cond ((char=? (string-ref f 0) #\/) f) + ((string=? (substring f 0 2) "~/") + (let ((prefix (passwd:dir (getpwuid (geteuid))))) + (string-append prefix (substring f 1 (string-length f))))) + ((char=? (string-ref f 0) #\~) + (let* ((user-end (string-index f #\/)) + (user (substring f 1 user-end)) + (prefix (passwd:dir (getpwnam user)))) + (string-append prefix (substring f user-end (string-length f))))) + (else (string-append (getcwd) "/" f)))) -- cgit v1.2.3