2
3
zrcadlo https://github.com/sammy-ette/Hilbish synchronizováno 2025-08-10 02:52:03 +00:00

Porovnat revize

..

Žádné společné commity. „5787582c2e6a69deb0a45743a7af1a7d8f238c08“ a „54689b7dd1f04d7048496fcc81cec779b00788d2“ mají zcela odlišnou historii.

4 změnil soubory, kde provedl 8 přidání a 39 odebrání

Zobrazit soubor

@ -8,7 +8,8 @@ function doPrompt(fail)
)) ))
end 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() doPrompt()

Zobrazit soubor

@ -23,18 +23,11 @@ var exports = map[string]lua.LGFunction {
"read": hlread, "read": hlread,
} }
var greeting string
func hilbishLoader(L *lua.LState) int { func hilbishLoader(L *lua.LState) int {
mod := L.SetFuncs(L.NewTable(), exports) mod := L.SetFuncs(L.NewTable(), exports)
host, _ := os.Hostname() host, _ := os.Hostname()
username := curuser.Username 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" { if runtime.GOOS == "windows" {
username = strings.Split(username, "\\")[1] // for some reason Username includes the hostname on 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, "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, "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, "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.") util.Document(L, mod, "Hilbish's core API, containing submodules and functions which relate to the shell itself.")
// hilbish.userDir table // hilbish.userDir table

20
lua.go
Zobrazit soubor

@ -137,23 +137,7 @@ func hshalias(L *lua.LState) int {
// appendPath(dir) // appendPath(dir)
// Appends `dir` to $PATH // Appends `dir` to $PATH
func hshappendPath(L *lua.LState) int { func hshappendPath(L *lua.LState) int {
// check if dir is a table or a string dir := L.CheckString(1)
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 = strings.Replace(dir, "~", curuser.HomeDir, 1) dir = strings.Replace(dir, "~", curuser.HomeDir, 1)
pathenv := os.Getenv("PATH") pathenv := os.Getenv("PATH")
@ -161,6 +145,8 @@ func appendPath(dir string) {
if !strings.Contains(pathenv, dir) { if !strings.Contains(pathenv, dir) {
os.Setenv("PATH", pathenv + string(os.PathListSeparator) + dir) os.Setenv("PATH", pathenv + string(os.PathListSeparator) + dir)
} }
return 0
} }
// exec(cmd) // exec(cmd)

Zobrazit soubor

@ -9,7 +9,6 @@ import (
"time" "time"
"github.com/yuin/gopher-lua" "github.com/yuin/gopher-lua"
"mvdan.cc/sh/v3/shell"
//"github.com/yuin/gopher-lua/parse" //"github.com/yuin/gopher-lua/parse"
"mvdan.cc/sh/v3/interp" "mvdan.cc/sh/v3/interp"
"mvdan.cc/sh/v3/syntax" "mvdan.cc/sh/v3/syntax"
@ -86,19 +85,10 @@ func execCommand(cmd string) error {
exechandle := func(ctx context.Context, args []string) error { exechandle := func(ctx context.Context, args []string) error {
_, argstring := splitInput(strings.Join(args, " ")) _, 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 // If alias was found, use command alias
argstring = aliases.Resolve(argstring) argstring = aliases.Resolve(argstring)
args, _ = shell.Fields(argstring, nil) args, _ = splitInput(argstring)
}
// If command is defined in Lua then run it // If command is defined in Lua then run it
luacmdArgs := l.NewTable() luacmdArgs := l.NewTable()