From 8a652fca4fb984ccb51e851ff740b4917ecfa07d Mon Sep 17 00:00:00 2001 From: Stephen Simpson Date: Tue, 14 Jan 2025 09:30:01 -0600 Subject: [PATCH] Loading all repos into the sack to avoid modularity problems Signed-off-by: Stephen Simpson --- rocky_man.py | 64 +++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/rocky_man.py b/rocky_man.py index 871b0ff..1deca0c 100644 --- a/rocky_man.py +++ b/rocky_man.py @@ -165,13 +165,12 @@ class ManMaker: } class RepoManager: - def __init__(self, base_url: str, contentdir: str, releasever: str, basearch: str, repo_type: str, download_dir, enabled: bool = True, gpgcheck: bool = False): + def __init__(self, base_url: str, contentdir: str, releasever: str, basearch: str, repo_types: str, download_dir, enabled: bool = True, gpgcheck: bool = False): self.base_url = base_url self.contentdir = contentdir self.releasever = releasever self.basearch = basearch - self.repo_type = repo_type - self.repo_name = f"{repo_type}-{releasever}" + self.repo_type = repo_types self.download_dir = download_dir @@ -186,8 +185,8 @@ class RepoManager: self.download_dir.mkdir(parents=True, exist_ok=True) self._configure_repo() - def generate_repo_url(self): - repo_url = urljoin(self.base_url, f"{self.contentdir}/{self.releasever}/{self.repo_type}/{self.basearch}/os/") + def generate_repo_url(self, repo_type: str = None): + repo_url = urljoin(self.base_url, f"{self.contentdir}/{self.releasever}/{repo_type}/{self.basearch}/os/") return repo_url def print_repo_url(self): @@ -195,13 +194,17 @@ class RepoManager: print(f"Repository URL: {repo_url}") def _configure_repo(self): - repo = dnf.repo.Repo(self.repo_name, self.base.conf) - repo_url = self.generate_repo_url() - repo.baseurl = [repo_url] - repo.enabled = self.enabled - repo.gpgcheck = self.gpgcheck - self.base.repos.add(repo) - self.base.fill_sack(load_system_repo=False) + for repo_type in self.repo_type: + self.repo_name = f"{repo_type}-{self.releasever}" + repo = dnf.repo.Repo(self.repo_name, self.base.conf) + repo_url = self.generate_repo_url(repo_type) + repo.baseurl = [repo_url] + repo.enabled = self.enabled + repo.gpgcheck = self.gpgcheck + self.base.repos.add(repo) + print(f"Repository added: {repo.name}") + + self.base.fill_sack(load_system_repo=False, load_available_repos=True) def print_repo(self): repo = self.base.repos @@ -337,27 +340,26 @@ def main(): HTML_BASE_DIR = "./html" for RELEASEVER in RELEASEVERS: - for REPO_TYPE in REPO_TYPES: - DOWNLOAD_DIR = f"{DOWNLOAD_BASE_DIR}/{RELEASEVER}/{REPO_TYPE}" - MAN_DIR = f"{MAN_BASE_DIR}/{RELEASEVER}/{REPO_TYPE}" - HTML_DIR = f"{HTML_BASE_DIR}/{RELEASEVER}" + DOWNLOAD_DIR = f"{DOWNLOAD_BASE_DIR}/{RELEASEVER}" + MAN_DIR = f"{MAN_BASE_DIR}/{RELEASEVER}" + HTML_DIR = f"{HTML_BASE_DIR}/{RELEASEVER}" + + repo_manager = RepoManager( + base_url = BASE_URL, + contentdir = CONTENTDIR, + releasever = RELEASEVER, + basearch = BASEARCH, + repo_types = REPO_TYPES, + download_dir = DOWNLOAD_DIR, + enabled = True, + gpgcheck = False + ) - repo_manager = RepoManager( - base_url = BASE_URL, - contentdir = CONTENTDIR, - releasever = RELEASEVER, - basearch = BASEARCH, - repo_type = REPO_TYPE, - download_dir = DOWNLOAD_DIR, - enabled = True, - gpgcheck = False - ) - - man_maker = ManMaker(man_dir=MAN_DIR, html_dir=HTML_DIR) + man_maker = ManMaker(man_dir=MAN_DIR, html_dir=HTML_DIR) - print("Downloading packages and generating HTML...") - repo_manager.download_all_packages(man_maker) - # repo_manager.download_package("at", man_maker) + print(f"Downloading packages and generating HTML for {RELEASEVER}...") + repo_manager.download_all_packages(man_maker) + # repo_manager.download_package("at", man_maker) generate_index(RELEASEVER, HTML_DIR) save_json(sitemap, Path(f"{HTML_DIR}/list.json"))