68 lines
1.4 KiB
Go

package functions
import (
"os"
luajit "git.sharkk.net/Sky/LuaJIT-to-Go"
)
// GetFSFunctions returns all file system Go functions
func GetFSFunctions() map[string]luajit.GoFunction {
return map[string]luajit.GoFunction{
"file_exists": func(s *luajit.State) int {
if err := s.CheckMinArgs(1); err != nil {
return s.PushError("file_exists: %v", err)
}
path, err := s.SafeToString(1)
if err != nil {
return s.PushError("file_exists: argument must be a string")
}
_, err = os.Stat(path)
s.PushBoolean(err == nil)
return 1
},
"file_size": func(s *luajit.State) int {
if err := s.CheckMinArgs(1); err != nil {
return s.PushError("file_size: %v", err)
}
path, err := s.SafeToString(1)
if err != nil {
return s.PushError("file_size: argument must be a string")
}
info, err := os.Stat(path)
if err != nil {
s.PushNumber(-1)
return 1
}
s.PushNumber(float64(info.Size()))
return 1
},
"file_is_dir": func(s *luajit.State) int {
if err := s.CheckMinArgs(1); err != nil {
return s.PushError("file_is_dir: %v", err)
}
path, err := s.SafeToString(1)
if err != nil {
return s.PushError("file_is_dir: argument must be a string")
}
info, err := os.Stat(path)
if err != nil {
s.PushBoolean(false)
return 1
}
s.PushBoolean(info.IsDir())
return 1
},
}
}