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 }, } }