mirror of
https://github.com/Hilbis/Hilbish
synced 2025-07-05 10:32:03 +00:00
lots of commented out code ive found a go lua library which implements lua 5.4 and found an opportunity to start working on it. this commit basically removes everything and just leaves enough for the shell to be "usable" and able to start. there are no builtins or libraries (besides the `hilbish` global)
85 lines
2.4 KiB
Go
85 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"hilbish/golibs/bait"
|
|
/*
|
|
"hilbish/golibs/commander"
|
|
"hilbish/golibs/fs"
|
|
"hilbish/golibs/terminal"
|
|
*/
|
|
rt "github.com/arnodel/golua/runtime"
|
|
"github.com/arnodel/golua/lib"
|
|
)
|
|
|
|
var minimalconf = `hilbish.prompt '& '`
|
|
|
|
func luaInit() {
|
|
l = rt.New(os.Stdout)
|
|
lib.LoadAll(l)
|
|
|
|
lib.LoadLibs(l, hilbishLoader)
|
|
// yes this is stupid, i know
|
|
chunk, _ := l.CompileAndLoadLuaChunk("", []byte("hilbish = require 'hilbish'"), rt.TableValue(l.GlobalEnv()))
|
|
_, err := rt.Call1(l.MainThread(), rt.FunctionValue(chunk))
|
|
fmt.Println("hsh load", err)
|
|
|
|
// Add fs and terminal module module to Lua
|
|
/* l.PreloadModule("fs", fs.Loader)
|
|
l.PreloadModule("terminal", terminal.Loader)
|
|
|
|
cmds := commander.New()
|
|
// When a command from Lua is added, register it for use
|
|
cmds.Events.On("commandRegister", func(cmdName string, cmd *lua.LFunction) {
|
|
commands[cmdName] = cmd
|
|
})
|
|
cmds.Events.On("commandDeregister", func(cmdName string) {
|
|
delete(commands, cmdName)
|
|
})
|
|
l.PreloadModule("commander", cmds.Loader)
|
|
*/
|
|
|
|
hooks = bait.New()
|
|
// l.PreloadModule("bait", hooks.Loader)
|
|
// Add Ctrl-C handler
|
|
hooks.Em.On("signal.sigint", func() {
|
|
if !interactive {
|
|
os.Exit(0)
|
|
}
|
|
})
|
|
|
|
// Add more paths that Lua can require from
|
|
chunk, _ = l.CompileAndLoadLuaChunk("", []byte("package.path = package.path .. " + requirePaths), rt.TableValue(l.GlobalEnv()))
|
|
_, err = rt.Call1(l.MainThread(), rt.FunctionValue(chunk))
|
|
fmt.Println("package path", err)
|
|
|
|
data, err := os.ReadFile("prelude/init.lua")
|
|
if err != nil {
|
|
data, err = os.ReadFile(preloadPath)
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, "Missing preload file, builtins may be missing.")
|
|
}
|
|
}
|
|
chunk, _ = l.CompileAndLoadLuaChunk("", data, rt.TableValue(l.GlobalEnv()))
|
|
_, err = rt.Call1(l.MainThread(), rt.FunctionValue(chunk))
|
|
fmt.Println("prelude", err)
|
|
}
|
|
|
|
func runConfig(confpath string) {
|
|
if !interactive {
|
|
return
|
|
}
|
|
data, err := os.ReadFile(confpath)
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, err, "\nAn error has occured while loading your config! Falling back to minimal default config.")
|
|
chunk, _ := l.CompileAndLoadLuaChunk("", []byte(minimalconf), rt.TableValue(l.GlobalEnv()))
|
|
_, err := rt.Call1(l.MainThread(), rt.FunctionValue(chunk))
|
|
fmt.Println(err)
|
|
}
|
|
chunk, _ := l.CompileAndLoadLuaChunk("", data, rt.TableValue(l.GlobalEnv()))
|
|
_, err = rt.Call1(l.MainThread(), rt.FunctionValue(chunk))
|
|
fmt.Println("config", err)
|
|
}
|