diff --git a/lua/fs.example.lua b/lua/fs.example.lua index ee2edb7..c5daac3 100644 --- a/lua/fs.example.lua +++ b/lua/fs.example.lua @@ -2,6 +2,12 @@ local fs = require("filesystem") local root = fs.directory(".") +string.starts_with = function(self, str) + return self:find('^' .. str) ~= nil +end + for entry in root do - print(entry) + if not entry.rel_path:starts_with("%.") then + print(entry.rel_path) + end end \ No newline at end of file diff --git a/lua_modules/filesystem/src/driver_filesystem/directory_source.rs b/lua_modules/filesystem/src/driver_filesystem/directory_source.rs index 1ce8ba2..2011499 100644 --- a/lua_modules/filesystem/src/driver_filesystem/directory_source.rs +++ b/lua_modules/filesystem/src/driver_filesystem/directory_source.rs @@ -1,6 +1,7 @@ use crate::driver_filesystem::filesystem_resource::FilesystemResourceLocation; use crate::resource::{DynResource, DynResourceLocation, Resource, ResourceLocation}; use crate::source::ResourceSource; +use std::fs::rename; use std::io::Sink; use std::path::PathBuf; use walkdir::WalkDir; @@ -31,7 +32,7 @@ impl Iterator for DirectorySource { self.iter .next() .map(|entry| entry.unwrap()) - .map(|entry| entry.path().to_path_buf()) + .map(|entry| entry.path().strip_prefix("./").unwrap().to_path_buf()) .map(|entry| { let loc = FilesystemResourceLocation::from(entry); Box::new(loc) as Box diff --git a/lua_modules/filesystem/src/lua_bindings/mod.rs b/lua_modules/filesystem/src/lua_bindings/mod.rs index 6426891..888c503 100644 --- a/lua_modules/filesystem/src/lua_bindings/mod.rs +++ b/lua_modules/filesystem/src/lua_bindings/mod.rs @@ -3,9 +3,3 @@ use mlua::{MetaMethod, UserData, UserDataFields, UserDataMethods}; mod resource_bindings; mod source_bindings; - -impl UserData for DynResourceLocation { - fn add_methods<'lua, M: UserDataMethods<'lua, Self>>(methods: &mut M) { - methods.add_meta_method_mut(MetaMethod::ToString, |lua, this, _: ()| Ok(this.location())); - } -} diff --git a/lua_modules/filesystem/src/lua_bindings/resource_bindings.rs b/lua_modules/filesystem/src/lua_bindings/resource_bindings.rs index e69de29..7e0f88a 100644 --- a/lua_modules/filesystem/src/lua_bindings/resource_bindings.rs +++ b/lua_modules/filesystem/src/lua_bindings/resource_bindings.rs @@ -0,0 +1,12 @@ +use crate::resource::DynResourceLocation; +use mlua::{MetaMethod, UserData, UserDataFields, UserDataMethods}; + +impl UserData for DynResourceLocation { + fn add_fields<'lua, F: UserDataFields<'lua, Self>>(fields: &mut F) { + fields.add_field_method_get("rel_path", |lua, this| Ok(this.location())) + } + + fn add_methods<'lua, M: UserDataMethods<'lua, Self>>(methods: &mut M) { + methods.add_meta_method_mut(MetaMethod::ToString, |lua, this, _: ()| Ok(this.location())); + } +}