mirror of https://github.com/Hilbis/Hilbish
Compare commits
No commits in common. "0850247615732eaa6eb0e49f28e0e7eb0c9d5c48" and "b86912be568fa814a5f4b42c3f5f60ec2ddf4a3d" have entirely different histories.
0850247615
...
b86912be56
5
main.go
5
main.go
|
@ -116,10 +116,7 @@ func main() {
|
|||
readline.Completer = readline.FilenameCompleter
|
||||
readline.LoadHistory(homedir + "/.hilbish-history")
|
||||
|
||||
if *cmdflag != "" {
|
||||
RunInput(*cmdflag)
|
||||
}
|
||||
|
||||
RunInput(*cmdflag)
|
||||
if getopt.NArgs() > 0 {
|
||||
l.SetGlobal("args", luar.New(l, getopt.Args()))
|
||||
err := l.DoFile(getopt.Arg(0))
|
||||
|
|
54
shell.go
54
shell.go
|
@ -1,8 +1,10 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
|
@ -14,21 +16,8 @@ import (
|
|||
)
|
||||
|
||||
func RunInput(input string) {
|
||||
cmdArgs, cmdString := splitInput(input)
|
||||
|
||||
// If alias was found, use command alias
|
||||
for aliases[cmdArgs[0]] != "" {
|
||||
alias := aliases[cmdArgs[0]]
|
||||
cmdString = alias + strings.TrimPrefix(cmdString, cmdArgs[0])
|
||||
cmdArgs, cmdString = splitInput(cmdString)
|
||||
|
||||
if aliases[cmdArgs[0]] != "" {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
// First try to load input, essentially compiling to bytecode
|
||||
fn, err := l.LoadString(cmdString)
|
||||
fn, err := l.LoadString(input)
|
||||
if err != nil && noexecute {
|
||||
fmt.Println(err)
|
||||
return
|
||||
|
@ -46,6 +35,15 @@ func RunInput(input string) {
|
|||
return
|
||||
}
|
||||
|
||||
cmdArgs, cmdString := splitInput(input)
|
||||
|
||||
// If alias was found, use command alias
|
||||
if aliases[cmdArgs[0]] != "" {
|
||||
alias := aliases[cmdArgs[0]]
|
||||
cmdString = alias + strings.Trim(cmdString, cmdArgs[0])
|
||||
cmdArgs, cmdString = splitInput(cmdString)
|
||||
}
|
||||
|
||||
// If command is defined in Lua then run it
|
||||
if commands[cmdArgs[0]] {
|
||||
err := l.CallByParam(lua.P{
|
||||
|
@ -183,3 +181,31 @@ func HandleHistory(cmd string) {
|
|||
// TODO: load history again (history shared between sessions like this ye)
|
||||
}
|
||||
|
||||
func StartMultiline(prev string, sb *strings.Builder) bool {
|
||||
// sb fromt outside is passed so we can
|
||||
// save input from previous prompts
|
||||
if sb.String() == "" {
|
||||
sb.WriteString(prev + " ")
|
||||
}
|
||||
|
||||
fmt.Print(multilinePrompt)
|
||||
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
|
||||
cont, err := reader.ReadString('\n')
|
||||
cont = strings.TrimSuffix(cont, "\n") + " "
|
||||
if err == io.EOF {
|
||||
// Exit when ^D
|
||||
fmt.Println("")
|
||||
return true
|
||||
}
|
||||
|
||||
sb.WriteString(cont)
|
||||
|
||||
err = execCommand(sb.String())
|
||||
if err != nil && syntax.IsIncomplete(err) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue