From d831a3ef24f63a4e840e27d4f986a512ce865263 Mon Sep 17 00:00:00 2001 From: Rutger van Beusekom Date: Tue, 1 Nov 2016 14:40:17 +0100 Subject: [PATCH] checkpoint --- sh/anguish.scm | 20 +++++++++++--------- test-anguish.sh | 1 + test-bash.sh | 2 ++ 3 files changed, 14 insertions(+), 9 deletions(-) mode change 100644 => 100755 test-anguish.sh create mode 100755 test-bash.sh diff --git a/sh/anguish.scm b/sh/anguish.scm index a6385f6..58b666d 100644 --- a/sh/anguish.scm +++ b/sh/anguish.scm @@ -103,13 +103,14 @@ copyleft. (string-split s #\newline)) "\n")) (define (expand identifier o) ;;identifier-string -> symbol - (define (foo o) + (define (expand- o) (let ((dollar-identifier (string-append "$" identifier))) (match o ((? symbol?) o) ((? string?) (if (string=? o dollar-identifier) (string->symbol identifier) o)) - ((? list?) (map foo o))))) - (map foo o)) + ((? list?) (map expand- o)) + (_ o)))) + (map expand- o)) ;; TODO: add braces @@ -119,10 +120,11 @@ copyleft. (string-match "\\?|\\*" pattern)) (define (glob2regex pattern) - (let* ((pattern (regexp-substitute/global #f "\\." pattern 'pre "\\." 'post)) - (pattern (regexp-substitute/global #f "\\?" pattern 'pre "." 'post)) - (pattern (regexp-substitute/global #f "\\*" pattern 'pre ".*" 'post))) - (make-regexp (string-append pattern "$")))) + (let* ((regex (regexp-substitute/global #f "\\." pattern 'pre "\\." 'post)) + (regex (regexp-substitute/global #f "\\?" pattern 'pre "." 'post)) + (regex (regexp-substitute/global #f "\\*" pattern 'pre ".*" 'post))) + (stdout "glob pattern: " pattern "regex pattern: " regex) + (make-regexp (string-append "^" regex "$")))) (define (glob-match pattern path) ;; pattern path -> bool (regexp-match? (regexp-exec (glob2regex pattern) path))) @@ -199,9 +201,9 @@ copyleft. (define (sh-exec ast) (define (exec cmd) (local-eval cmd (the-environment))) - (let* (;(print (format (current-error-port) "parsed: ~s\n" ast)) + (let* (;;(print (format (current-error-port) "parsed: ~s\n" ast)) (ast (transform ast)) - ;(print (format (current-error-port) "transformed: ~s\n" ast)) + ;;(print (format (current-error-port) "transformed: ~s\n" ast)) ) (match ast ('script #t) ;; skip diff --git a/test-anguish.sh b/test-anguish.sh old mode 100644 new mode 100755 index 09c545b..465b064 --- a/test-anguish.sh +++ b/test-anguish.sh @@ -1 +1,2 @@ +#!/bin/bash for f in test/*; do echo $f; ./anguish $f; done diff --git a/test-bash.sh b/test-bash.sh new file mode 100755 index 0000000..e16eb8d --- /dev/null +++ b/test-bash.sh @@ -0,0 +1,2 @@ +#!/bin/bash +for f in test/*; do echo $f; bash $f; done