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