Loading all repos into the sack to avoid modularity problems

Signed-off-by: Stephen Simpson <ssimpson89@users.noreply.github.com>
This commit is contained in:
Stephen Simpson
2025-01-14 09:30:01 -06:00
parent 1307ca54a3
commit 8a652fca4f

View File

@@ -165,13 +165,12 @@ class ManMaker:
} }
class RepoManager: 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.base_url = base_url
self.contentdir = contentdir self.contentdir = contentdir
self.releasever = releasever self.releasever = releasever
self.basearch = basearch self.basearch = basearch
self.repo_type = repo_type self.repo_type = repo_types
self.repo_name = f"{repo_type}-{releasever}"
self.download_dir = download_dir self.download_dir = download_dir
@@ -186,8 +185,8 @@ class RepoManager:
self.download_dir.mkdir(parents=True, exist_ok=True) self.download_dir.mkdir(parents=True, exist_ok=True)
self._configure_repo() self._configure_repo()
def generate_repo_url(self): def generate_repo_url(self, repo_type: str = None):
repo_url = urljoin(self.base_url, f"{self.contentdir}/{self.releasever}/{self.repo_type}/{self.basearch}/os/") repo_url = urljoin(self.base_url, f"{self.contentdir}/{self.releasever}/{repo_type}/{self.basearch}/os/")
return repo_url return repo_url
def print_repo_url(self): def print_repo_url(self):
@@ -195,13 +194,17 @@ class RepoManager:
print(f"Repository URL: {repo_url}") print(f"Repository URL: {repo_url}")
def _configure_repo(self): def _configure_repo(self):
repo = dnf.repo.Repo(self.repo_name, self.base.conf) for repo_type in self.repo_type:
repo_url = self.generate_repo_url() self.repo_name = f"{repo_type}-{self.releasever}"
repo.baseurl = [repo_url] repo = dnf.repo.Repo(self.repo_name, self.base.conf)
repo.enabled = self.enabled repo_url = self.generate_repo_url(repo_type)
repo.gpgcheck = self.gpgcheck repo.baseurl = [repo_url]
self.base.repos.add(repo) repo.enabled = self.enabled
self.base.fill_sack(load_system_repo=False) 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): def print_repo(self):
repo = self.base.repos repo = self.base.repos
@@ -337,27 +340,26 @@ def main():
HTML_BASE_DIR = "./html" HTML_BASE_DIR = "./html"
for RELEASEVER in RELEASEVERS: for RELEASEVER in RELEASEVERS:
for REPO_TYPE in REPO_TYPES: DOWNLOAD_DIR = f"{DOWNLOAD_BASE_DIR}/{RELEASEVER}"
DOWNLOAD_DIR = f"{DOWNLOAD_BASE_DIR}/{RELEASEVER}/{REPO_TYPE}" MAN_DIR = f"{MAN_BASE_DIR}/{RELEASEVER}"
MAN_DIR = f"{MAN_BASE_DIR}/{RELEASEVER}/{REPO_TYPE}" HTML_DIR = f"{HTML_BASE_DIR}/{RELEASEVER}"
HTML_DIR = f"{HTML_BASE_DIR}/{RELEASEVER}"
repo_manager = RepoManager( repo_manager = RepoManager(
base_url = BASE_URL, base_url = BASE_URL,
contentdir = CONTENTDIR, contentdir = CONTENTDIR,
releasever = RELEASEVER, releasever = RELEASEVER,
basearch = BASEARCH, basearch = BASEARCH,
repo_type = REPO_TYPE, repo_types = REPO_TYPES,
download_dir = DOWNLOAD_DIR, download_dir = DOWNLOAD_DIR,
enabled = True, enabled = True,
gpgcheck = False 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...") print(f"Downloading packages and generating HTML for {RELEASEVER}...")
repo_manager.download_all_packages(man_maker) repo_manager.download_all_packages(man_maker)
# repo_manager.download_package("at", man_maker) # repo_manager.download_package("at", man_maker)
generate_index(RELEASEVER, HTML_DIR) generate_index(RELEASEVER, HTML_DIR)
save_json(sitemap, Path(f"{HTML_DIR}/list.json")) save_json(sitemap, Path(f"{HTML_DIR}/list.json"))