mirror of https://github.com/Hilbis/Hilbish
Compare commits
No commits in common. "5787582c2e6a69deb0a45743a7af1a7d8f238c08" and "54689b7dd1f04d7048496fcc81cec779b00788d2" have entirely different histories.
5787582c2e
...
54689b7dd1
|
@ -8,7 +8,8 @@ function doPrompt(fail)
|
|||
))
|
||||
end
|
||||
|
||||
print(lunacolors.format(hilbish.greeting))
|
||||
print(lunacolors.format('Welcome to {magenta}Hilbish{reset}, {cyan}' .. hilbish.user
|
||||
.. '{reset}.\n' .. 'The nice lil shell for {blue}Lua{reset} fanatics!\n'))
|
||||
|
||||
doPrompt()
|
||||
|
||||
|
|
|
@ -23,18 +23,11 @@ var exports = map[string]lua.LGFunction {
|
|||
"read": hlread,
|
||||
}
|
||||
|
||||
var greeting string
|
||||
|
||||
func hilbishLoader(L *lua.LState) int {
|
||||
mod := L.SetFuncs(L.NewTable(), exports)
|
||||
|
||||
host, _ := os.Hostname()
|
||||
username := curuser.Username
|
||||
|
||||
greeting = `Welcome to {magenta}Hilbish{reset}, {cyan}` + curuser.Username + `{reset}.
|
||||
The nice lil shell for {blue}Lua{reset} fanatics!
|
||||
`
|
||||
|
||||
if runtime.GOOS == "windows" {
|
||||
username = strings.Split(username, "\\")[1] // for some reason Username includes the hostname on windows
|
||||
}
|
||||
|
@ -46,7 +39,6 @@ The nice lil shell for {blue}Lua{reset} fanatics!
|
|||
util.SetField(L, mod, "dataDir", lua.LString(dataDir), "Directory for Hilbish's data files")
|
||||
util.SetField(L, mod, "interactive", lua.LBool(interactive), "If this is an interactive shell")
|
||||
util.SetField(L, mod, "login", lua.LBool(interactive), "Whether this is a login shell")
|
||||
util.SetField(L, mod, "greeting", lua.LString(greeting), "Hilbish's welcome message for interactive shells. It has Lunacolors formatting.")
|
||||
util.Document(L, mod, "Hilbish's core API, containing submodules and functions which relate to the shell itself.")
|
||||
|
||||
// hilbish.userDir table
|
||||
|
|
20
lua.go
20
lua.go
|
@ -137,23 +137,7 @@ func hshalias(L *lua.LState) int {
|
|||
// appendPath(dir)
|
||||
// Appends `dir` to $PATH
|
||||
func hshappendPath(L *lua.LState) int {
|
||||
// check if dir is a table or a string
|
||||
arg := L.Get(1)
|
||||
fmt.Println(arg.Type())
|
||||
if arg.Type() == lua.LTTable {
|
||||
arg.(*lua.LTable).ForEach(func(k lua.LValue, v lua.LValue) {
|
||||
appendPath(v.String())
|
||||
})
|
||||
} else if arg.Type() == lua.LTString {
|
||||
appendPath(arg.String())
|
||||
} else {
|
||||
L.RaiseError("bad argument to appendPath (expected string or table, got %v)", L.Get(1).Type().String())
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
func appendPath(dir string) {
|
||||
dir := L.CheckString(1)
|
||||
dir = strings.Replace(dir, "~", curuser.HomeDir, 1)
|
||||
pathenv := os.Getenv("PATH")
|
||||
|
||||
|
@ -161,6 +145,8 @@ func appendPath(dir string) {
|
|||
if !strings.Contains(pathenv, dir) {
|
||||
os.Setenv("PATH", pathenv + string(os.PathListSeparator) + dir)
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
// exec(cmd)
|
||||
|
|
12
shell.go
12
shell.go
|
@ -9,7 +9,6 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/yuin/gopher-lua"
|
||||
"mvdan.cc/sh/v3/shell"
|
||||
//"github.com/yuin/gopher-lua/parse"
|
||||
"mvdan.cc/sh/v3/interp"
|
||||
"mvdan.cc/sh/v3/syntax"
|
||||
|
@ -86,19 +85,10 @@ func execCommand(cmd string) error {
|
|||
|
||||
exechandle := func(ctx context.Context, args []string) error {
|
||||
_, argstring := splitInput(strings.Join(args, " "))
|
||||
// i dont really like this but it works
|
||||
if aliases.All()[args[0]] != "" {
|
||||
for i, arg := range args {
|
||||
if strings.Contains(arg, " ") {
|
||||
args[i] = fmt.Sprintf("\"%s\"", arg)
|
||||
}
|
||||
}
|
||||
_, argstring = splitInput(strings.Join(args, " "))
|
||||
|
||||
// If alias was found, use command alias
|
||||
argstring = aliases.Resolve(argstring)
|
||||
args, _ = shell.Fields(argstring, nil)
|
||||
}
|
||||
args, _ = splitInput(argstring)
|
||||
|
||||
// If command is defined in Lua then run it
|
||||
luacmdArgs := l.NewTable()
|
||||
|
|
Loading…
Reference in New Issue