lua-modules/lua/fs.example.lua

77 lines
1.6 KiB
Lua

local fs = require("filesystem")
local dirs = fs.directory("/Users/kinch/Desktop/Rebuild World")
local FileTree = {foo = "bar"}
function FileTree:new(iterator)
local file_tree = {
iterator = iterator,
filters = {}
}
setmetatable(file_tree, self)
self.__index = self
return file_tree
end
function FileTree:filter(filter_fn)
table.insert(self.filters, filter_fn)
return self
end
function FileTree:__call()
local next = self.iterator()
if next == nil then
return nil
end
for k,filter in pairs(self.filters) do
if (not filter(next)) then
return self()
end
end
return next
end
function is_dir(entry)
return entry:is_dir()
end
function starts_with(prefix)
return function(entry)
return entry.path:find("^"..prefix)
end
end
function does_not(predicate)
return function(...) return not predicate(...) end
end
local comic_dir = FileTree:new(fs.directory("."))
comic_dir:filter(is_dir)
for chapter_dir in comic_dir do
FileTree:new(fs.directory(chapter_dir)):filter(does_not(starts_with("./")))
end
--for dir in dirs do
-- if dir:is_dir() then
-- for sub_dir in fs.directory(dir.path) do
-- print(sub_dir)
-- end
-- end
--end
--for dir in dirs do
-- local files = dir:filter {
-- exclude = function(file)
-- return file.is_file and not file.basename:starts_with("._")
-- end
-- }
--
-- zip {
-- from = files,
-- into = dir.basename,
-- extension = "cbz",
-- }
--end