squish.lua

changeset 38
903128a42604
parent 37
cb8b48b08e1e
child 39
1d2cca116cce
equal deleted inserted replaced
37:cb8b48b08e1e 38:903128a42604
165 end 165 end
166 166
167 if enable_debug then 167 if enable_debug then
168 f:write(require_resource("squish.debug")); 168 f:write(require_resource("squish.debug"));
169 end 169 end
170
171 print_verbose("Resolving modules...");
172 do
173 local LUA_DIRSEP = package.config:sub(1,1);
174 local LUA_PATH_MARK = package.config:sub(5,5);
175
176 local package_path = package.path:gsub("[^;]+", function (path)
177 if not path:match("^%"..LUA_DIRSEP) then
178 return base_path..path;
179 end
180 end):gsub("/%./", "/");
181 local package_cpath = package.cpath:gsub("[^;]+", function (path)
182 if not path:match("^%"..LUA_DIRSEP) then
183 return base_path..path;
184 end
185 end):gsub("/%./", "/");
186
187 function resolve_module(name, path)
188 name = name:gsub("%.", LUA_DIRSEP);
189 for c in path:gmatch("[^;]+") do
190 c = c:gsub("%"..LUA_PATH_MARK, name);
191 print_debug("Looking for "..c)
192 local f = io.open(c);
193 if f then
194 print_debug("Found!");
195 f:close();
196 return c;
197 end
198 end
199 return nil; -- not found
200 end
201
202 for i, module in ipairs(modules) do
203 if not module.path then
204 module.path = resolve_module(module.name, package_path);
205 if not module.path then
206 print_err("Couldn't resolve module: "..module.name);
207 else
208 -- Strip base_path from resolved path
209 module.path = module.path:gsub("^"..base_path:gsub("%p", "%%%1"), "");
210 end
211 end
212 end
213 end
214
170 215
171 print_verbose("Packing modules..."); 216 print_verbose("Packing modules...");
172 for _, module in ipairs(modules) do 217 for _, module in ipairs(modules) do
173 local modulename, path = module.name, base_path..module.path; 218 local modulename, path = module.name, base_path..module.path;
174 print_debug("Packing "..modulename.." ("..path..")..."); 219 print_debug("Packing "..modulename.." ("..path..")...");

mercurial