77 lines
1.6 KiB
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 |