Extend `ReleaseDownload` source to be composed of several archives.

This commit is contained in:
Matthieu Gautier 2023-10-25 14:12:05 +02:00
parent 45c55013bd
commit 8cf6c39d11
1 changed files with 11 additions and 5 deletions

View File

@ -110,22 +110,28 @@ class NoopSource(Source):
class ReleaseDownload(Source): class ReleaseDownload(Source):
archive_top_dir = None archive_top_dir = None
@property
def archives(self):
return (self.archive, )
@property @property
def extract_path(self): def extract_path(self):
return pj(neutralEnv('source_dir'), self.source_dir) return pj(neutralEnv('source_dir'), self.source_dir)
def _download(self, context): def _download(self, context):
context.try_skip(neutralEnv('archive_dir'), self.full_name) context.try_skip(neutralEnv('archive_dir'), self.full_name)
neutralEnv('download')(self.archive) for archive in self.archives:
neutralEnv('download')(archive)
def _extract(self, context): def _extract(self, context):
context.try_skip(self.extract_path) context.try_skip(self.extract_path)
if os.path.exists(self.extract_path): if os.path.exists(self.extract_path):
shutil.rmtree(self.extract_path) shutil.rmtree(self.extract_path)
extract_archive(pj(neutralEnv('archive_dir'), self.archive.name), for archive in self.archives:
neutralEnv('source_dir'), extract_archive(pj(neutralEnv('archive_dir'), archive.name),
topdir=self.archive_top_dir, neutralEnv('source_dir'),
name=self.source_dir) topdir=self.archive_top_dir,
name=self.source_dir)
def prepare(self): def prepare(self):
self.command('download', self._download) self.command('download', self._download)