use rlua::prelude::*;
use dirs;
use crate::bindings::system::path::LuaPath;
pub fn init(lua: &Lua) -> crate::Result<()> {
let module = lua.create_table()?;
module.set("home", lua.create_function( |_, _: ()| {
Ok(dirs::home_dir().map(LuaPath))
})? )?;
module.set("audio", lua.create_function( |_, _: ()| {
Ok(dirs::audio_dir().map(LuaPath))
})? )?;
module.set("config", lua.create_function( |_, _: ()| {
Ok(dirs::config_dir().map(LuaPath))
})? )?;
module.set("cache", lua.create_function( |_, _: ()| {
Ok(dirs::cache_dir().map(LuaPath))
})? )?;
module.set("data", lua.create_function( |_, _: ()| {
Ok(dirs::data_dir().map(LuaPath))
})? )?;
module.set("data_local", lua.create_function( |_, _: ()| {
Ok(dirs::data_local_dir().map(LuaPath))
})? )?;
module.set("executable", lua.create_function( |_, _: ()| {
Ok(dirs::executable_dir().map(LuaPath))
})? )?;
module.set("runtime", lua.create_function( |_, _: ()| {
Ok(dirs::runtime_dir().map(LuaPath))
})? )?;
module.set("desktop", lua.create_function( |_, _: ()| {
Ok(dirs::desktop_dir().map(LuaPath))
})? )?;
module.set("document", lua.create_function( |_, _: ()| {
Ok(dirs::document_dir().map(LuaPath))
})? )?;
module.set("download", lua.create_function( |_, _: ()| {
Ok(dirs::download_dir().map(LuaPath))
})? )?;
module.set("font", lua.create_function( |_, _: ()| {
Ok(dirs::font_dir().map(LuaPath))
})? )?;
module.set("picture", lua.create_function( |_, _: ()| {
Ok(dirs::picture_dir().map(LuaPath))
})? )?;
module.set("public", lua.create_function( |_, _: ()| {
Ok(dirs::public_dir().map(LuaPath))
})? )?;
module.set("template", lua.create_function( |_, _: ()| {
Ok(dirs::template_dir().map(LuaPath))
})? )?;
module.set("video", lua.create_function( |_, _: ()| {
Ok(dirs::video_dir().map(LuaPath))
})? )?;
lua.globals().set("dirs", module)?;
Ok(())
}