handle built packages during update

This commit is contained in:
Evgenii Alekseev 2021-03-12 00:24:26 +03:00
parent 5d526e1bd8
commit 4866548224
2 changed files with 18 additions and 10 deletions

View File

@ -114,13 +114,18 @@ class Application:
self.repository.process_sync(targets) self.repository.process_sync(targets)
def update(self, updates: Iterable[Package]) -> None: def update(self, updates: Iterable[Package]) -> None:
def process_single(portion: Iterable[Package]): def process_update(paths: Iterable[str]) -> None:
packages = self.repository.process_build(portion) self.repository.process_update(paths)
self.repository.process_update(packages)
self._finalize() self._finalize()
# process built packages
packages = self.repository.packages_built()
process_update(packages)
# process manual packages
tree = Tree() tree = Tree()
tree.load(updates) tree.load(updates)
for num, level in enumerate(tree.levels()): for num, level in enumerate(tree.levels()):
self.logger.info(f'processing level #{num} {[package.base for package in level]}') self.logger.info(f'processing level #{num} {[package.base for package in level]}')
process_single(level) packages = self.repository.process_build(level)
process_update(packages)

View File

@ -63,8 +63,8 @@ class Repository:
shutil.rmtree(os.path.join(self.paths.manual, package)) shutil.rmtree(os.path.join(self.paths.manual, package))
def _clear_packages(self) -> None: def _clear_packages(self) -> None:
for package in os.listdir(self.paths.packages): for package in self.packages_built():
os.remove(os.path.join(self.paths.packages, package)) os.remove(package)
def packages(self) -> List[Package]: def packages(self) -> List[Package]:
result: Dict[str, Package] = {} result: Dict[str, Package] = {}
@ -80,6 +80,12 @@ class Repository:
continue continue
return list(result.values()) 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 process_build(self, updates: Iterable[Package]) -> List[str]:
def build_single(package: Package) -> None: def build_single(package: Package) -> None:
self.web.set_building(package.base) self.web.set_building(package.base)
@ -99,10 +105,7 @@ class Repository:
continue continue
self._clear_build() self._clear_build()
return [ return self.packages_built()
os.path.join(self.paths.packages, fn)
for fn in os.listdir(self.paths.packages)
]
def process_remove(self, packages: Iterable[str]) -> str: def process_remove(self, packages: Iterable[str]) -> str:
def remove_single(package: str) -> None: def remove_single(package: str) -> None: