]> git.ipfire.org Git - pbs.git/commitdiff
sources: Add scaffolding to fetch sources
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 24 Oct 2022 17:23:30 +0000 (17:23 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 24 Oct 2022 17:23:30 +0000 (17:23 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/repository.py
src/buildservice/sources.py
src/scripts/pakfire-build-service

index 44773bb0ce277f684a4d2cd3b5808f2a4b0cc575..b376c93ab1331eb98f30dc82fed2d61f506279dd 100644 (file)
@@ -133,6 +133,13 @@ class Repositories(base.Object):
                return self._get_repository("SELECT * FROM repositories \
                        WHERE id = %s", repo_id)
 
+       async def fetch_sources(self):
+               """
+                       Fetches sources for all repositories
+               """
+               for repo in self:
+                       await repo.fetch_sources()
+
        async def write(self):
                """
                        Write/re-write all repositories
@@ -464,6 +471,16 @@ class Repository(base.DataObject):
 
                return list(sources)
 
+       async def fetch_sources(self):
+               """
+                       Fetches all sources for this repository
+               """
+               log.debug("Fetching all sources for %s" % self)
+
+               await asyncio.gather(
+                       *(source.fetch() for source in self.sources),
+               )
+
        # Builds
 
        @lazy_property
index fb56a248c0ad8942859b117a618a094f4a679ed9..9e3b5cab607b6c6658bab352909e62425783a3d5 100644 (file)
@@ -16,6 +16,9 @@ from . import misc
 from .constants import *
 from .decorators import *
 
+# Setup logging
+log = logging.getLogger("pakfire.buildservice.sources")
+
 VALID_TAGS = (
        "Acked-by",
        "Cc",
@@ -202,6 +205,12 @@ class Sources(base.Object):
 class Source(base.DataObject):
        table = "sources"
 
+       def __repr__(self):
+               return "<%s %s>" % (self.__class__.__name__, self.name)
+
+       def __str__(self):
+               return self.name
+
        # Name
 
        def get_name(self):
@@ -298,6 +307,16 @@ class Source(base.DataObject):
 
                return commit
 
+       # Operations
+
+       async def fetch(self):
+               """
+                       Fetches any new commits from this source
+               """
+               log.debug("Fetching %s" % self)
+
+               # XXX
+
 
 class Commit(base.DataObject):
        table = "source_commits"
index 836ac936519e4893a5ef409981d0d682c1917a3b..36f6d42e1e6942bd67971b32d8ad89b9e8f0b397 100644 (file)
@@ -34,6 +34,7 @@ class Cli(object):
                        "messages:queue:send" : self.backend.messages.queue.send,
 
                        # Repositories
+                       "repos:fetch-sources" : self.backend.repos.fetch_sources,
                        "repos:rotate-keys"   : self.backend.repos.rotate_keys,
                        "repos:write"         : self.backend.repos.write,