Timothy Sample
9b879623de
Import existing variables into the REPL
...
* geesh/repl.scm (run-repl): Use existing environment variables for
the initial environment.
2018-11-28 23:07:03 -05:00
Timothy Sample
737ed6a1b7
Add function for reading an 'environ'
...
* geesh/environment.scm (environ->alist): New function.
* tests/environment.scm: Test it.
2018-11-28 23:07:03 -05:00
Timothy Sample
d7d26534b2
Remove prompt-printing from the REPL
...
This will have to be added again later, but for now it is getting in
the way of automated testing.
* geesh/repl.scm (run-repl): Do not print prompts.
2018-11-28 23:07:03 -05:00
Timothy Sample
93b238d9fd
Use parser and interpreter in the REPL
...
* geesh/repl.scm (run-repl): Actually read and evaluate input.
2018-11-28 23:07:03 -05:00
Timothy Sample
549d1e7867
Remove REPL unit tests
...
In order to test the REPL in isolation, we would have to mock out the
parser and interpreter. This is possible, but too much work for the
benefit (at least for now).
* tests/repl.scm: Deleted.
* Makefile.am: Remove it.
2018-11-28 23:07:03 -05:00
Timothy Sample
83c5d603ee
Add eval module
...
* geesh/eval.scm: New file.
* Makefile.am: Add it.
2018-11-28 23:07:03 -05:00
Timothy Sample
e1f139b841
Add support for built-ins, starting with 'echo'
...
* geesh/built-ins/echo.scm: New file.
* geesh/built-ins.scm: New file.
* Makefile.scm: Add them.
* geesh/shell.scm (exec-let): Include built-ins in command search.
* tests/shell.scm: Add a test for this.
2018-11-28 23:07:03 -05:00
Timothy Sample
7cc94e88e1
Add PATH searching
...
* geesh/shell.scm (slashless?) New function.
(split-search-path): New function.
(find-utility): New function.
(exec-let): Use them to search PATH for a utility when appropriate.
(exec): Update doc string.
* tests/shell.scm: Test it.
2018-11-28 23:07:03 -05:00
Timothy Sample
020adfc58b
Add convenience function 'var-ref*'
...
* geesh/environment.scm (var-ref*): New public function.
* geesh/word.scm (word->qword): Use it to simplify things.
2018-11-28 23:07:03 -05:00
Timothy Sample
da1746f2d6
Add missing doc strings in environment
...
* geesh/environment.scm (var-ref): Add doc string.
(set-var!): Add doc string.
2018-11-28 23:07:03 -05:00
Timothy Sample
b9ec924bbe
Add shell module
...
* geesh/shell.scm: New file.
* tests/shell.scm: New file.
* Makefile.am: Add them.
* tests/config.scm.in: New file.
* configure.ac: Add it.
* .gitignore: Add its generated form.
* .dir-locals.el: Add indentation rule for 'make-script'.
2018-11-28 23:07:03 -05:00
Timothy Sample
cfb2b5b99b
Add function for creating an 'environ'
...
* geesh/environment.scm (environment->environ): New function.
* tests/environment.scm: Test it.
2018-11-28 23:07:03 -05:00
Timothy Sample
99378697e2
Add missing '(test-end)' to environment tests
...
* tests/environment.scm: Add '(test-end)'.
2018-11-28 23:07:03 -05:00
Timothy Sample
9d834d0767
Fix parsing of for loops
...
* geesh/parser.scm (make-parser): When parsing for loops, make all
word-lists actual lists, and make an empty word-list with the 'in'
keyword yield an empty list rather than a reference to '$@'.
* tests/parser.scm: Update tests.
2018-11-28 23:04:30 -05:00
Timothy Sample
91cfdac307
Throw an error when missing a single quote
...
We used to loop forever here because of the lack of 'eof-object?'
test!
* geesh/lexer.scm (get-single-quotation): Throw an error on unexpected
end-of-file.
2018-11-28 23:00:10 -05:00
Timothy Sample
48e122c42f
Fix AST for redirects and assignments
...
This should have been in 2b05199562
, but
it was overlooked.
* geesh/parser.scm (make-parser): Splice in arguments in the redirect
case (to be consistent with the non-redirect case).
* tests/parser.scm: Add a test for this.
2018-11-28 22:09:34 -05:00
Timothy Sample
870c10b37a
Add a CI script for GitLab
...
* build-aux/gitlab-ci.yml: New file.
* .gitignore: Do not ignore it.
2018-11-28 21:55:22 -05:00
Jan Nieuwenhuizen
1162f37d19
test: 07-variable-or-empty.
2018-11-25 11:53:29 +01:00
Jan Nieuwenhuizen
7f2b1b1ff1
build: Oops, configure SHELLS as shell.
2018-11-25 11:48:12 +01:00
Jan Nieuwenhuizen
7f6b88c43b
implement shift.
2018-11-25 08:46:10 +01:00
Jan Nieuwenhuizen
2f5de56cfd
test: add 50-redirect-merge.sh
2018-11-24 21:57:34 +01:00
Jan Nieuwenhuizen
f3fc92c266
test: add failing redirect/pipe test.
2018-11-24 21:05:59 +01:00
Jan Nieuwenhuizen
29ae8bc570
test: add substitution tests.
2018-11-24 20:48:21 +01:00
Jan Nieuwenhuizen
3c7b22febf
test: add 42-sh.sh
2018-11-24 13:17:21 +01:00
Jan Nieuwenhuizen
cb05054006
fix parsing of 07-variable-or-doublequete.sh.
2018-11-24 13:10:38 +01:00
Jan Nieuwenhuizen
9ac8140cf4
test: 07-variable-or-doublequete.sh: New failing parse test.
2018-11-24 12:57:07 +01:00
Jan Nieuwenhuizen
b2f5004eb6
01-script-$0.sh, 01-script-$@.sh: add test and fix.
2018-11-24 12:25:24 +01:00
Jan Nieuwenhuizen
f81b526bd0
fix and test cd builtin.
2018-11-24 11:32:33 +01:00
Jan Nieuwenhuizen
58d1627b08
fix 60-function.sh.
2018-11-24 11:12:44 +01:00
Jan Nieuwenhuizen
2df901d337
50-redirect-append.sh: New failing parse test.
2018-11-24 11:05:46 +01:00
Jan Nieuwenhuizen
43f79811aa
fix 07-variable-or-variable.sh.
2018-11-24 10:55:24 +01:00
Jan Nieuwenhuizen
b9013153f2
test: 07-variable-or-variable.sh: New failing parse test.
2018-11-18 15:36:35 +01:00
Jan Nieuwenhuizen
bdbc29e448
transform: reduce simple commands...WIP
2018-11-17 20:08:17 +01:00
Jan Nieuwenhuizen
992479b0a3
11-for-subshell: new failing parse test.
2018-11-17 20:08:01 +01:00
Jan Nieuwenhuizen
74454c2156
transform: handle ./source.
2018-11-17 19:27:51 +01:00
Jan Nieuwenhuizen
9d1ed9ef57
transform: if-clause->if.
2018-11-17 19:27:51 +01:00
Jan Nieuwenhuizen
df73d5421f
transform: translate script to begin or command.
2018-11-17 08:46:39 +01:00
Jan Nieuwenhuizen
b89ca17134
transform: rewrite io-redirection.
2018-11-17 08:42:54 +01:00
Jan Nieuwenhuizen
96d55d0985
guix: install bournish in libexec/gash.
2018-11-16 18:58:28 +01:00
Jan Nieuwenhuizen
2dc0a56ff9
guix: replace recipe with guile-only (bootstrappable) build.
2018-11-16 08:03:58 +01:00
Rutger van Beusekom
d36ee815df
variable-regex: fix 70-*.sh
2018-11-16 00:24:17 +01:00
Jan Nieuwenhuizen
df605a161a
sed: Support substitution of \t, \n.
2018-11-14 22:58:32 +01:00
Jan Nieuwenhuizen
303746a4bc
io-here.
2018-11-14 22:49:06 +01:00
Jan Nieuwenhuizen
b6340bd612
io-redirect: some progress, some new tests.
2018-11-14 22:41:24 +01:00
Jan Nieuwenhuizen
049c4a20dc
cat: Oops, two fixes.
2018-11-14 22:40:52 +01:00
Jan Nieuwenhuizen
efd22ab959
fix 11-for.sh.
2018-11-14 21:09:21 +01:00
Rutger van Beusekom
bb79378e66
fix 10-if-else.sh and 10-if-elif.sh
2018-11-14 19:59:18 +01:00
Rutger van Beusekom
1fe85e2b8f
fix 10-if-word-variable.sh (HACK)
2018-11-14 19:50:43 +01:00
Rutger van Beusekom
c20ac38ace
fix 08-variable-not-and.sh
2018-11-14 19:46:02 +01:00
Rutger van Beusekom
03dcfb9a9f
fix 08-variable-and.sh
2018-11-14 19:40:46 +01:00