Add basic glob function
This commit is contained in:
parent
b1572cc9f1
commit
2964ebbe1b
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -1032,6 +1032,7 @@ name = "lb"
|
|||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"derive_more",
|
"derive_more",
|
||||||
|
"glob",
|
||||||
"luaffi",
|
"luaffi",
|
||||||
"luajit",
|
"luajit",
|
||||||
"sysexits",
|
"sysexits",
|
||||||
|
@ -9,11 +9,13 @@ repository.workspace = true
|
|||||||
|
|
||||||
[features]
|
[features]
|
||||||
task = ["tokio/rt", "tokio/time"]
|
task = ["tokio/rt", "tokio/time"]
|
||||||
fs = ["tokio/fs"]
|
fs = ["tokio/fs", "dep:glob"]
|
||||||
net = ["tokio/net"]
|
net = ["tokio/net"]
|
||||||
|
glob = ["dep:glob"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
derive_more = { version = "2.0.1", features = ["full"] }
|
derive_more = { version = "2.0.1", features = ["full"] }
|
||||||
|
glob = { version = "0.3.2", optional = true }
|
||||||
luaffi = { path = "../luaffi" }
|
luaffi = { path = "../luaffi" }
|
||||||
luajit = { path = "../luajit" }
|
luajit = { path = "../luajit" }
|
||||||
sysexits = "0.9.0"
|
sysexits = "0.9.0"
|
||||||
|
@ -26,6 +26,12 @@ pub enum Error {
|
|||||||
/// I/O error.
|
/// I/O error.
|
||||||
#[error("{0}")]
|
#[error("{0}")]
|
||||||
Io(#[from] std::io::Error),
|
Io(#[from] std::io::Error),
|
||||||
|
/// Glob error.
|
||||||
|
#[error("{0}")]
|
||||||
|
Glob(#[from] glob::GlobError),
|
||||||
|
/// Glob pattern error.
|
||||||
|
#[error("{0}")]
|
||||||
|
GlobPattern(#[from] glob::PatternError),
|
||||||
}
|
}
|
||||||
|
|
||||||
type Result<T> = std::result::Result<T, Error>;
|
type Result<T> = std::result::Result<T, Error>;
|
||||||
@ -70,6 +76,10 @@ impl lb_fslib {
|
|||||||
pub extern "Lua-C" fn read_dir_sync(&self, path: &str) -> Result<lb_read_dir_sync> {
|
pub extern "Lua-C" fn read_dir_sync(&self, path: &str) -> Result<lb_read_dir_sync> {
|
||||||
Ok(std::fs::read_dir(path)?.into())
|
Ok(std::fs::read_dir(path)?.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub extern "Lua-C" fn glob(&self, pattern: &str) -> Result<lb_glob_paths> {
|
||||||
|
Ok(glob::glob(pattern)?.into())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Iterator over the entries in a directory.
|
/// Iterator over the entries in a directory.
|
||||||
@ -289,3 +299,20 @@ impl lb_file_perms {
|
|||||||
self.0.set_readonly(readonly);
|
self.0.set_readonly(readonly);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Iterator that yields paths from the filesystem that match a particular pattern.
|
||||||
|
#[derive(Debug, From)]
|
||||||
|
#[cdef]
|
||||||
|
pub struct lb_glob_paths(#[opaque] glob::Paths);
|
||||||
|
|
||||||
|
#[metatype]
|
||||||
|
impl lb_glob_paths {
|
||||||
|
#[call]
|
||||||
|
pub extern "Lua-C" fn next(&mut self) -> Result<Option<String>> {
|
||||||
|
Ok(self
|
||||||
|
.0
|
||||||
|
.next()
|
||||||
|
.transpose()?
|
||||||
|
.map(|s| s.to_string_lossy().into()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user