Hi Jan, Jan Nieuwenhuizen <jann...@gnu.org> writes:
> Timothy Sample writes: > > Hello, > > Attached are two small patches that allow me to run the Gash test suite > with Geesh, like so > > PATH=$PATH:bin SHELL='../geesh/pre-inst-env geesh' ./check.sh > > assuming that both projects live in the same parent directory. > > Geesh does much better than Gash, it only fails 11/126 tests. > > Moreover, all POSIX tests pass! The ones that fail involve `echo -e' > and Bash-isms, notably substitutions like ${var/foo} (and all %, %%, #, > ##, ...etc). > > What a great job! Thanks! I had a lot of help from the Oil shell test suite that we talked about before. Right now I am working on sed, but integrating the Oil tests into Gash is something that I want to do soon. With respect to Bash-isms, I’ve been deliberately avoiding them. POSIX seemed complicated enough for a first go! The substring operations (“%%”, etc.) are all POSIX, but Geesh raises a “not implemented” error whenever it sees them. :) > Interestingly, Gash passes all tests that Geesh fails, and Gash fails > about 20 other tests. What an interesting coincidence! > It looks like that once we manage to combine Geesh and Gash, stealing > eachothers code or otherwise, we have a shell that can replace bash and > coreutils&co in the initial bootstrap. I am still of the opinion that Geesh’s parser is its strongest asset (hint, hint). The back-end code is all pretty ad-hoc. > Greetings, > janneke > > Also put up on: https://gitlab.com/janneke/geesh > > From 0aca7e71517b63fc3f67f3a72757f69d7a91158a Mon Sep 17 00:00:00 2001 > From: Jan Nieuwenhuizen <jann...@gnu.org> > Date: Sun, 9 Dec 2018 07:35:18 +0100 > Subject: [PATCH 1/2] guix: Use getcwd instead of hard-coded directory. > > * guix.scm (make-select): Use getcwd instead of hard-coded directory. > --- > guix.scm | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/guix.scm b/guix.scm > index 04973a9..3b647dd 100644 > --- a/guix.scm > +++ b/guix.scm > @@ -24,7 +24,7 @@ > version))) > > (define (make-select) > - (let* ((directory (repository-discover "/home/samplet/code/geesh")) > + (let* ((directory (repository-discover (getcwd))) Definitely didn’t mean to commit that! :p > (repository (repository-open directory)) > (oid (reference-target (repository-head repository))) > (commit (commit-lookup repository oid)) > -- > 2.19.1 > > From 52d3b6ea3c47a84f58e06e0d09db5ce8f9cf383e Mon Sep 17 00:00:00 2001 > From: Jan Nieuwenhuizen <jann...@gnu.org> > Date: Sun, 9 Dec 2018 07:37:22 +0100 > Subject: [PATCH 2/2] Support -e, -x in geesh script. > > * scripts/geesh.in (options-spec): Support -e, -x. > --- > scripts/geesh.in | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/scripts/geesh.in b/scripts/geesh.in > index fa8001f..e7a0051 100644 > --- a/scripts/geesh.in > +++ b/scripts/geesh.in > @@ -24,17 +24,26 @@ > (set! %load-compiled-path (cons "@GODIR@" %load-compiled-path)) > > (use-modules (geesh repl) > + (geesh environment) > (ice-9 getopt-long)) > > (define options-spec > '((command (single-char #\c) (value #t)) > - (stdin (single-char #\s)))) > + (errexit (single-char #\e)) > + (stdin (single-char #\s)) > + (xtrace (single-char #\x)))) > > (let* ((options (getopt-long (program-arguments) options-spec > #:stop-at-first-non-option #t)) > (command (option-ref options 'command #f)) > + (errexit? (option-ref options 'errexit #f)) > (stdin (option-ref options 'stdin #f)) > + (xtrace? (option-ref options 'xtrace #f)) > (args (option-ref options '() '()))) > + (when errexit? > + (setopt! 'errexit #t)) > + (when xtrace? > + (setopt! 'xtrace #t)) > (cond > ((and command stdin) > (format (current-error-port) -- Tim