diff --git a/src/ahriman/application/application.py b/src/ahriman/application/application.py index ef3dbebe..0549fea7 100644 --- a/src/ahriman/application/application.py +++ b/src/ahriman/application/application.py @@ -114,13 +114,18 @@ class Application: self.repository.process_sync(targets) def update(self, updates: Iterable[Package]) -> None: - def process_single(portion: Iterable[Package]): - packages = self.repository.process_build(portion) - self.repository.process_update(packages) + def process_update(paths: Iterable[str]) -> None: + self.repository.process_update(paths) self._finalize() + # process built packages + packages = self.repository.packages_built() + process_update(packages) + + # process manual packages tree = Tree() tree.load(updates) for num, level in enumerate(tree.levels()): self.logger.info(f'processing level #{num} {[package.base for package in level]}') - process_single(level) \ No newline at end of file + packages = self.repository.process_build(level) + process_update(packages) \ No newline at end of file diff --git a/src/ahriman/core/repository.py b/src/ahriman/core/repository.py index feab4c80..f396789f 100644 --- a/src/ahriman/core/repository.py +++ b/src/ahriman/core/repository.py @@ -63,8 +63,8 @@ class Repository: shutil.rmtree(os.path.join(self.paths.manual, package)) def _clear_packages(self) -> None: - for package in os.listdir(self.paths.packages): - os.remove(os.path.join(self.paths.packages, package)) + for package in self.packages_built(): + os.remove(package) def packages(self) -> List[Package]: result: Dict[str, Package] = {} @@ -80,6 +80,12 @@ class Repository: continue return list(result.values()) + def packages_built(self) -> List[str]: + return [ + os.path.join(self.paths.packages, fn) + for fn in os.listdir(self.paths.packages) + ] + def process_build(self, updates: Iterable[Package]) -> List[str]: def build_single(package: Package) -> None: self.web.set_building(package.base) @@ -99,10 +105,7 @@ class Repository: continue self._clear_build() - return [ - os.path.join(self.paths.packages, fn) - for fn in os.listdir(self.paths.packages) - ] + return self.packages_built() def process_remove(self, packages: Iterable[str]) -> str: def remove_single(package: str) -> None: