mirror of https://github.com/Hilbis/Hilbish
feat: add -n flag (closes #47)
parent
6bb2a2f8c8
commit
e6382d454d
7
main.go
7
main.go
|
@ -35,6 +35,7 @@ var (
|
||||||
hooks bait.Bait
|
hooks bait.Bait
|
||||||
interactive bool
|
interactive bool
|
||||||
login bool // Are we the login shell?
|
login bool // Are we the login shell?
|
||||||
|
noexecute bool // Should we run Lua or only report syntax errors
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -51,10 +52,12 @@ func main() {
|
||||||
// TODO: issue #37
|
// TODO: issue #37
|
||||||
_ = getopt.BoolLong("login", 'l', "Makes Hilbish act like a login shell")
|
_ = getopt.BoolLong("login", 'l', "Makes Hilbish act like a login shell")
|
||||||
_ = getopt.BoolLong("interactive", 'i', "Force Hilbish to be an interactive shell")
|
_ = getopt.BoolLong("interactive", 'i', "Force Hilbish to be an interactive shell")
|
||||||
|
_ = getopt.BoolLong("noexec", 'n', "Force Hilbish to be an interactive shell")
|
||||||
|
|
||||||
getopt.Parse()
|
getopt.Parse()
|
||||||
loginshflag := getopt.Lookup('l').Seen()
|
loginshflag := getopt.Lookup('l').Seen()
|
||||||
interactiveflag := getopt.Lookup('i').Seen()
|
interactiveflag := getopt.Lookup('i').Seen()
|
||||||
|
noexecflag := getopt.Lookup('n').Seen()
|
||||||
|
|
||||||
if *cmdflag == "" || interactiveflag {
|
if *cmdflag == "" || interactiveflag {
|
||||||
interactive = true
|
interactive = true
|
||||||
|
@ -64,6 +67,10 @@ func main() {
|
||||||
interactive = false
|
interactive = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if noexecflag {
|
||||||
|
noexecute = true
|
||||||
|
}
|
||||||
|
|
||||||
// first arg, first character
|
// first arg, first character
|
||||||
if loginshflag || os.Args[0][0] == '-' {
|
if loginshflag || os.Args[0][0] == '-' {
|
||||||
login = true
|
login = true
|
||||||
|
|
14
shell.go
14
shell.go
|
@ -16,9 +16,17 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func RunInput(input string) {
|
func RunInput(input string) {
|
||||||
// First try to run user input in Lua
|
// First try to load input, essentially compiling to bytecode
|
||||||
err := l.DoString(input)
|
fn, err := l.LoadString(input)
|
||||||
|
if err != nil && noexecute {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// And if there's no syntax errors and -n isnt provided, run
|
||||||
|
if !noexecute {
|
||||||
|
l.Push(fn)
|
||||||
|
err = l.PCall(0, lua.MultRet, nil)
|
||||||
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// If it succeeds, add to history and prompt again
|
// If it succeeds, add to history and prompt again
|
||||||
HandleHistory(input)
|
HandleHistory(input)
|
||||||
|
|
Loading…
Reference in New Issue