| @@ -28,6 +28,7 @@ class Generator(object): | |||||
| self.site = site | self.site = site | ||||
| self.generated_once = False | self.generated_once = False | ||||
| self.deps = Dependents(site.sitepath) | self.deps = Dependents(site.sitepath) | ||||
| self.waiting_deps = {} | |||||
| self.create_context() | self.create_context() | ||||
| self.template = None | self.template = None | ||||
| Plugin.load_all(site) | Plugin.load_all(site) | ||||
| @@ -132,6 +133,7 @@ class Generator(object): | |||||
| if not resource.source_file.is_text: | if not resource.source_file.is_text: | ||||
| return [] | return [] | ||||
| rel_path = resource.relative_path | rel_path = resource.relative_path | ||||
| self.waiting_deps[rel_path] = [] | |||||
| deps = [] | deps = [] | ||||
| if hasattr(resource, 'depends'): | if hasattr(resource, 'depends'): | ||||
| user_deps = resource.depends | user_deps = resource.depends | ||||
| @@ -139,13 +141,18 @@ class Generator(object): | |||||
| deps.append(dep) | deps.append(dep) | ||||
| dep_res = self.site.content.resource_from_relative_path(dep) | dep_res = self.site.content.resource_from_relative_path(dep) | ||||
| if dep_res: | if dep_res: | ||||
| deps.extend(self.get_dependencies(dep_res)) | |||||
| if dep_res.relative_path in self.waiting_deps.keys(): | |||||
| self.waiting_deps[dep_res.relative_path].append(rel_path) | |||||
| else: | |||||
| deps.extend(self.get_dependencies(dep_res)) | |||||
| if resource.uses_template: | if resource.uses_template: | ||||
| deps.extend(self.template.get_dependencies(rel_path)) | deps.extend(self.template.get_dependencies(rel_path)) | ||||
| deps = list(set(deps)) | deps = list(set(deps)) | ||||
| if None in deps: | if None in deps: | ||||
| deps.remove(None) | deps.remove(None) | ||||
| self.deps[rel_path] = deps | self.deps[rel_path] = deps | ||||
| for path in self.waiting_deps[rel_path]: | |||||
| self.deps[path].extend(deps) | |||||
| return deps | return deps | ||||
| def has_resource_changed(self, resource): | def has_resource_changed(self, resource): | ||||
| @@ -343,4 +350,4 @@ class Generator(object): | |||||
| logger.debug("Copying binary file [%s]", resource) | logger.debug("Copying binary file [%s]", resource) | ||||
| self.events.begin_binary_resource(resource) | self.events.begin_binary_resource(resource) | ||||
| resource.source_file.copy_to(target) | resource.source_file.copy_to(target) | ||||
| self.events.binary_resource_complete(resource) | |||||
| self.events.binary_resource_complete(resource) | |||||