68 lines
1.4 KiB
Go
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
|
|
},
|
|
}
|
|
}
|