From 60a29f687c520fd7b17f4b98ab0a033c41e31fc5 Mon Sep 17 00:00:00 2001 From: Tristan Maat Date: Sat, 24 Mar 2018 17:56:56 +0000 Subject: _ostree.py: Introduce _list_all_refs() and list_artifacts() The unused list_remote_refs() function has also been removed as part of this commit. --- buildstream/_ostree.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/buildstream/_ostree.py b/buildstream/_ostree.py index 246b54f51..e40df5fb5 100644 --- a/buildstream/_ostree.py +++ b/buildstream/_ostree.py @@ -552,3 +552,47 @@ def configure_remote(repo, remote, url, key_url=None): repo.remote_gpg_import(remote, stream, None, 0, None) except GLib.GError as e: raise OSTreeError("Failed to add gpg key from url '{}': {}".format(key_url, e.message)) from e + + +# list_artifacts(): +# +# List cached artifacts in Least Recently Modified (LRM) order. +# +# Returns: +# (list) - A list of refs in LRM order +# +def list_artifacts(repo): + # string of: /path/to/repo/refs/heads + ref_heads = os.path.join(repo.get_path().get_path(), 'refs', 'heads') + + # obtain list of // + refs = _list_all_refs(repo).keys() + + mtimes = [] + for ref in refs: + ref_path = os.path.join(ref_heads, ref) + if os.path.exists(ref_path): + # Obtain the mtime (the time a file was last modified) + mtimes.append(os.path.getmtime(ref_path)) + + # NOTE: Sorted will sort from earliest to latest, thus the + # first element of this list will be the file modified earliest. + return [ref for _, ref in sorted(zip(mtimes, refs))] + + +# _list_all_refs(): +# +# Create a list of all refs. +# +# Args: +# repo (OSTree.Repo): The repo +# +# Returns: +# (dict): A dict of refs to checksums. +# +def _list_all_refs(repo): + try: + _, refs = repo.list_refs(None) + return refs + except GLib.GError as e: + raise OSTreeError(message=e.message) from e -- cgit v1.2.1