feat: add hilbish.read function

`hilbish.read` will read input from the user, using
hilbish's line editor library (hilbiline or readline)
dev
sammyette 2021-10-30 19:53:42 -04:00
parent 97a6e4baf2
commit 84ec3d085d
No known key found for this signature in database
GPG Key ID: 50EE40A2809851F5
2 changed files with 24 additions and 0 deletions

View File

@ -2,5 +2,9 @@ cwd() > Returns the current directory of the shell
flag(f) > Checks if the `f` flag has been passed to Hilbish.
read(prompt) -> input? > Read input from the user, using Hilbish's line editor/input reader.
This is a separate instance from the one Hilbish actually uses.
Returns `input`, will be nil if ctrl + d is pressed, or an error occurs (which shouldn't happen)
run(cmd) > Runs `cmd` in Hilbish's sh interpreter

View File

@ -19,6 +19,7 @@ var exports = map[string]lua.LGFunction {
"run": hlrun,
"flag": hlflag,
"cwd": hlcwd,
"read": hlread,
}
func HilbishLoader(L *lua.LState) int {
@ -94,3 +95,22 @@ func getenv(key, fallback string) string {
}
return value
}
// read(prompt) -> input?
// Read input from the user, using Hilbish's line editor/input reader.
// This is a separate instance from the one Hilbish actually uses.
// Returns `input`, will be nil if ctrl + d is pressed, or an error occurs (which shouldn't happen)
func hlread(L *lua.LState) int {
luaprompt := L.CheckString(1)
lualr := NewLineReader(luaprompt)
input, err := lualr.Read()
if err != nil {
L.Push(lua.LNil)
return 1
}
L.Push(lua.LString(input))
return 1
}