Compare commits

..

No commits in common. "d7104ec591eeebd5e978a3843207b20bae7e2618" and "926fc96895a9b92c041a4afb3b7e64a174797c4e" have entirely different histories.

5 changed files with 29 additions and 41 deletions

View File

@ -10,7 +10,7 @@ install:
@install -v -d "$(DESTDIR)$(BINDIR)/" && install -m 0755 -v hilbish "$(DESTDIR)$(BINDIR)/hilbish"
@mkdir -p "$(DESTDIR)$(LIBDIR)"
@cp libs preload.lua .hilbishrc.lua "$(DESTDIR)$(LIBDIR)" -r
@grep "$(DESTDIR)$(BINDIR)/hilbish" -qxF /etc/shells || echo "$(DESTDIR)$(BINDIR)/hilbish" >> /etc/shells
@echo "$(DESTDIR)$(BINDIR)/hilbish" >> /etc/shells
@echo "Hilbish Installed"
uninstall:

View File

@ -4,26 +4,27 @@ import (
"os"
"strings"
lua "github.com/yuin/gopher-lua"
luar "layeh.com/gopher-luar"
"github.com/yuin/gopher-lua"
"layeh.com/gopher-luar"
)
func Loader(L *lua.LState) int {
mod := L.SetFuncs(L.NewTable(), exports)
mod := L.SetFuncs(L.NewTable(), exports)
L.Push(mod)
return 1
L.Push(mod)
return 1
}
func LuaErr(L *lua.LState, code int) {
// TODO: Error with a table, with path and error code
L.Error(lua.LNumber(code), 2)
}
var exports = map[string]lua.LGFunction{
"cd": cd,
"mkdir": mkdir,
"stat": stat,
"cd": cd,
"mkdir": mkdir,
"stat": stat,
}
func cd(L *lua.LState) int {

31
lua.go
View File

@ -2,9 +2,9 @@ package main
import (
"fmt"
"hilbish/golibs/bait"
"hilbish/golibs/commander"
"hilbish/golibs/fs"
hooks "hilbish/golibs/bait"
cmds "hilbish/golibs/commander"
lfs "hilbish/golibs/fs"
"os"
"github.com/yuin/gopher-lua"
@ -27,14 +27,13 @@ func LuaInit(confpath string) {
l.SetGlobal("prompt", l.NewFunction(hshprompt))
l.SetGlobal("multiprompt", l.NewFunction(hshmlprompt))
l.SetGlobal("alias", l.NewFunction(hshalias))
l.SetGlobal("appendPath", l.NewFunction(hshappendPath))
// Add fs module to Lua
l.PreloadModule("fs", fs.Loader)
l.PreloadModule("fs", lfs.Loader)
cmds := commander.New()
commander := cmds.New()
// When a command from Lua is added, register it for use
cmds.Events.On("commandRegister",
commander.Events.On("commandRegister",
func(cmdName string, cmd *lua.LFunction) {
commands[cmdName] = true
l.SetField(
@ -44,10 +43,10 @@ func LuaInit(confpath string) {
cmd)
})
l.PreloadModule("commander", cmds.Loader)
l.PreloadModule("commander", commander.Loader)
hooks = bait.New()
l.PreloadModule("bait", hooks.Loader)
bait = hooks.New()
l.PreloadModule("bait", bait.Loader)
// Add more paths that Lua can require from
l.DoString(`package.path = package.path
@ -68,9 +67,7 @@ func LuaInit(confpath string) {
}
// Run config
if !interactive {
return
}
if !interactive { return }
err = l.DoFile(confpath)
if err != nil {
fmt.Fprintln(os.Stderr, err,
@ -100,11 +97,3 @@ func hshalias(L *lua.LState) int {
return 1
}
func hshappendPath(L *lua.LState) int {
path := L.ToString(1)
os.Setenv("PATH", os.Getenv("PATH") + ":" + path)
return 0
}

View File

@ -8,7 +8,7 @@ import (
"os/user"
"strings"
"hilbish/golibs/bait"
hooks "hilbish/golibs/bait"
"github.com/akamensky/argparse"
"github.com/bobappleyard/readline"
@ -28,7 +28,7 @@ var (
commands = map[string]bool{}
aliases = map[string]string{}
hooks bait.Bait
bait hooks.Bait
homedir string
running bool
interactive bool

View File

@ -8,8 +8,8 @@ import (
"os"
"strings"
"github.com/bobappleyard/readline"
"github.com/yuin/gopher-lua"
"github.com/bobappleyard/readline"
"layeh.com/gopher-luar"
"mvdan.cc/sh/v3/interp"
"mvdan.cc/sh/v3/syntax"
@ -23,7 +23,7 @@ func RunInput(input string) {
// If it succeeds, add to history and prompt again
HandleHistory(input)
hooks.Em.Emit("command.exit", 0)
bait.Em.Emit("command.exit", 0)
return
}
@ -71,22 +71,22 @@ func RunInput(input string) {
if syntax.IsIncomplete(err) || strings.HasSuffix(input, "\\") {
continue
} else if code, ok := interp.IsExitStatus(err); ok {
hooks.Em.Emit("command.exit", code)
bait.Em.Emit("command.exit", code)
} else if err != nil {
fmt.Fprintln(os.Stderr, err)
hooks.Em.Emit("command.exit", 1)
bait.Em.Emit("command.exit", 1)
}
break
}
} else {
if code, ok := interp.IsExitStatus(err); ok {
hooks.Em.Emit("command.exit", code)
bait.Em.Emit("command.exit", code)
} else {
fmt.Fprintln(os.Stderr, err)
}
}
} else {
hooks.Em.Emit("command.exit", 0)
bait.Em.Emit("command.exit", 0)
}
HandleHistory(cmdString)
}
@ -167,9 +167,7 @@ func HandleHistory(cmd string) {
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 + " ")
}
if sb.String() == "" { sb.WriteString(prev + " ") }
fmt.Print(multilinePrompt)