diff --git a/bpkg_manager/subproc.py b/bpkg_manager/subproc.py index 525d440..5b16df0 100644 --- a/bpkg_manager/subproc.py +++ b/bpkg_manager/subproc.py @@ -228,15 +228,20 @@ class Repository: self.set_from_dict(repodict) - def to_dict(self) -> dict: + def to_dict(self, sort=False) -> dict: """ Return a dict representation of the repository """ - self.log.debug("Rendering to a dict") - self.log.debug("url: %s", self.url) + if self.packages: + packages = [p.to_dict() for p in self.packages] + if sort: + packages.sort(key=lambda p: p['bl_info']['name'].lower()) + else: + packages = [] + return { 'name': self.name, - 'packages': [p.to_dict() for p in self.packages] if self.packages is not None else None, + 'packages': packages, 'url': self.url, '_headers': self._headers, } @@ -497,7 +502,7 @@ def refresh(pipe_to_blender, storage_path: pathlib.Path, repository_url: str): pipe_to_blender.send(DownloadError(err.status_code, err.message)) repo.to_file(repo_path) # TODO: this always writes even if repo wasn't changed - pipe_to_blender.send(Result(repo.to_dict())) + pipe_to_blender.send(Result(repo.to_dict(sort=True))) def debug_hang(): """Hangs for an hour. For testing purposes only."""