mirror of
https://gitlab.com/dslackw/slpkg.git
synced 2024-12-26 09:58:31 +01:00
0a9c900bb4
Signed-off-by: Dimitris Zlatanidis <d.zlatanidis@gmail.com>
444 lines
17 KiB
Python
444 lines
17 KiB
Python
#!/usr/bin/python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
from pathlib import Path
|
|
from typing import ClassVar
|
|
from dataclasses import dataclass
|
|
import tomlkit
|
|
|
|
from slpkg.configs import Configs
|
|
from slpkg.utilities import Utilities
|
|
from slpkg.toml_errors import TomlErrors
|
|
|
|
|
|
@dataclass
|
|
class Repositories: # pylint: disable=[R0902]
|
|
"""Repositories configurations."""
|
|
|
|
toml_errors = TomlErrors()
|
|
utils = Utilities()
|
|
|
|
repositories_toml_file: Path = Path(Configs.etc_path, 'repositories.toml')
|
|
repositories_path: Path = Path(Configs.lib_path, 'repos')
|
|
|
|
repos_config = {}
|
|
repositories = {}
|
|
repos_toml = {}
|
|
|
|
data_json: str = 'data.json'
|
|
repos_information: Path = Path(repositories_path, 'repos_information.json')
|
|
default_repository: str = 'sbo'
|
|
|
|
slackbuilds_txt: str = 'SLACKBUILDS.TXT'
|
|
packages_txt: str = 'PACKAGES.TXT'
|
|
checksums_md5: str = 'CHECKSUMS.md5'
|
|
changelog_txt: str = 'ChangeLog.txt'
|
|
|
|
sbo_repo: bool = True
|
|
sbo_repo_name: str = 'sbo'
|
|
sbo_repo_path: Path = Path(repositories_path, sbo_repo_name)
|
|
sbo_repo_mirror: str = ''
|
|
sbo_repo_tag: str = '_SBo'
|
|
sbo_repo_tar_suffix: str = '.tar.gz'
|
|
|
|
ponce_repo: bool = False
|
|
ponce_repo_name: str = 'ponce'
|
|
ponce_repo_path: Path = Path(repositories_path, ponce_repo_name)
|
|
ponce_repo_mirror: str = ''
|
|
ponce_repo_tag: str = '_SBo'
|
|
ponce_repo_tar_suffix: str = '.tar.gz'
|
|
|
|
slack_repo: bool = False
|
|
slack_repo_name: str = 'slack'
|
|
slack_repo_path: Path = Path(repositories_path, slack_repo_name)
|
|
slack_repo_mirror: str = ''
|
|
slack_repo_tag: str = ''
|
|
|
|
slack_extra_repo: bool = False
|
|
slack_extra_repo_name: str = 'slack_extra'
|
|
slack_extra_repo_path: Path = Path(repositories_path, slack_extra_repo_name)
|
|
slack_extra_repo_mirror_packages: str = ''
|
|
slack_extra_repo_mirror_changelog: str = ''
|
|
slack_extra_repo_tag: str = ''
|
|
|
|
slack_patches_repo: bool = False
|
|
slack_patches_repo_name: str = 'slack_patches'
|
|
slack_patches_repo_path: Path = Path(repositories_path, slack_patches_repo_name)
|
|
slack_patches_repo_mirror_packages: str = ''
|
|
slack_patches_repo_mirror_changelog: str = ''
|
|
slack_patches_repo_tag: str = ''
|
|
|
|
alien_repo: bool = False
|
|
alien_repo_name: str = 'alien'
|
|
alien_repo_path: Path = Path(repositories_path, alien_repo_name)
|
|
alien_repo_mirror_packages: str = ''
|
|
alien_repo_mirror_changelog: str = ''
|
|
alien_repo_tag: str = 'alien'
|
|
|
|
multilib_repo: bool = False
|
|
multilib_repo_name: str = 'multilib'
|
|
multilib_repo_path: Path = Path(repositories_path, multilib_repo_name)
|
|
multilib_repo_mirror_packages: str = ''
|
|
multilib_repo_mirror_changelog: str = ''
|
|
multilib_repo_tag: str = 'alien'
|
|
|
|
restricted_repo: bool = False
|
|
restricted_repo_name: str = 'restricted'
|
|
restricted_repo_path: Path = Path(repositories_path, restricted_repo_name)
|
|
restricted_repo_mirror_packages: str = ''
|
|
restricted_repo_mirror_changelog: str = ''
|
|
restricted_repo_tag: str = 'alien'
|
|
|
|
gnome_repo: bool = False
|
|
gnome_repo_name: str = 'gnome'
|
|
gnome_repo_path: Path = Path(repositories_path, gnome_repo_name)
|
|
gnome_repo_mirror: str = ''
|
|
gnome_repo_tag: str = 'gfs'
|
|
|
|
msb_repo: bool = False
|
|
msb_repo_name: str = 'msb'
|
|
msb_repo_path: Path = Path(repositories_path, msb_repo_name)
|
|
msb_repo_mirror_packages: str = ''
|
|
msb_repo_mirror_changelog: str = ''
|
|
msb_repo_tag: str = 'msb'
|
|
|
|
csb_repo: bool = False
|
|
csb_repo_name: str = 'csb'
|
|
csb_repo_path: Path = Path(repositories_path, csb_repo_name)
|
|
csb_repo_mirror: str = ''
|
|
csb_repo_tag: str = 'csb'
|
|
|
|
conraid_repo: bool = False
|
|
conraid_repo_name: str = 'conraid'
|
|
conraid_repo_path: Path = Path(repositories_path, conraid_repo_name)
|
|
conraid_repo_mirror: str = ''
|
|
conraid_repo_tag: str = 'cf'
|
|
|
|
slackonly_repo: bool = False
|
|
slackonly_repo_name: str = 'slackonly'
|
|
slackonly_repo_path: Path = Path(repositories_path, slackonly_repo_name)
|
|
slackonly_repo_mirror: str = ''
|
|
slackonly_repo_tag: str = 'slonly'
|
|
|
|
salix_repo: bool = False
|
|
salix_repo_name: str = 'salix'
|
|
salix_repo_path: Path = Path(repositories_path, salix_repo_name)
|
|
salix_repo_mirror: str = ''
|
|
salix_repo_tag: str = ''
|
|
|
|
salix_extra_repo: bool = False
|
|
salix_extra_repo_name: str = 'salix_extra'
|
|
salix_extra_repo_path: Path = Path(repositories_path, salix_extra_repo_name)
|
|
salix_extra_repo_mirror: str = ''
|
|
salix_extra_repo_tag: str = ''
|
|
|
|
slackel_repo: bool = False
|
|
slackel_repo_name: str = 'slackel'
|
|
slackel_repo_path: Path = Path(repositories_path, slackel_repo_name)
|
|
slackel_repo_mirror: str = ''
|
|
slackel_repo_tag: str = 'dj'
|
|
|
|
slint_repo: bool = False
|
|
slint_repo_name: str = 'slint'
|
|
slint_repo_path: Path = Path(repositories_path, slint_repo_name)
|
|
slint_repo_mirror: str = ''
|
|
slint_repo_tag: str = 'slint'
|
|
|
|
pprkut_repo: bool = False
|
|
pprkut_repo_name: str = 'pprkut'
|
|
pprkut_repo_path: Path = Path(repositories_path, pprkut_repo_name)
|
|
pprkut_repo_mirror: str = ''
|
|
pprkut_repo_tag: str = 'pprkut'
|
|
|
|
try:
|
|
if repositories_toml_file.is_file():
|
|
with open(repositories_toml_file, 'r', encoding='utf-8') as file:
|
|
repos_config = tomlkit.parse(file.read())
|
|
|
|
default_repository: str = repos_config['DEFAULT']['REPOSITORY'].lower()
|
|
|
|
new_packages = repos_config['NEW_PACKAGES']['REPOSITORIES']
|
|
remove_packages = repos_config['REMOVE_PACKAGES']['REPOSITORIES']
|
|
|
|
sbo_repo: bool = repos_config['SBO']['ENABLE']
|
|
sbo_repo_mirror: str = repos_config['SBO']['MIRROR']
|
|
|
|
ponce_repo: bool = repos_config['PONCE']['ENABLE']
|
|
ponce_repo_mirror: str = repos_config['PONCE']['MIRROR']
|
|
|
|
slack_repo: bool = repos_config['SLACK']['ENABLE']
|
|
slack_repo_mirror: str = repos_config['SLACK']['MIRROR']
|
|
|
|
slack_extra_repo: bool = repos_config['SLACK_EXTRA']['ENABLE']
|
|
slack_extra_repo_url: str = repos_config['SLACK_EXTRA']['MIRROR']
|
|
slack_extra_repo_mirror_packages: str = slack_extra_repo_url
|
|
slack_extra_repo_mirror_changelog: str = f"{'/'.join(slack_extra_repo_url.split('/')[:-2])}/"
|
|
|
|
slack_patches_repo: bool = repos_config['SLACK_PATCHES']['ENABLE']
|
|
slack_patches_repo_url: str = repos_config['SLACK_PATCHES']['MIRROR']
|
|
slack_patches_repo_mirror_packages: str = slack_patches_repo_url
|
|
slack_patches_repo_mirror_changelog: str = f"{'/'.join(slack_patches_repo_url.split('/')[:-2])}/"
|
|
|
|
alien_repo: bool = repos_config['ALIEN']['ENABLE']
|
|
alien_repo_url: str = repos_config['ALIEN']['MIRROR']
|
|
alien_repo_mirror_packages: str = alien_repo_url
|
|
alien_repo_mirror_changelog: str = f"{'/'.join(alien_repo_url.split('/')[:-3])}/"
|
|
|
|
multilib_repo: bool = repos_config['MULTILIB']['ENABLE']
|
|
multilib_repo_url: str = repos_config['MULTILIB']['MIRROR']
|
|
multilib_repo_mirror_packages: str = multilib_repo_url
|
|
multilib_repo_mirror_changelog: str = f"{'/'.join(multilib_repo_url.split('/')[:-2])}/"
|
|
|
|
restricted_repo: bool = repos_config['RESTRICTED']['ENABLE']
|
|
restricted_repo_url: str = repos_config['RESTRICTED']['MIRROR']
|
|
restricted_repo_mirror_packages: str = restricted_repo_url
|
|
restricted_repo_mirror_changelog: str = f"{'/'.join(restricted_repo_url.split('/')[:-3])}/"
|
|
|
|
gnome_repo: bool = repos_config['GNOME']['ENABLE']
|
|
gnome_repo_mirror: str = repos_config['GNOME']['MIRROR']
|
|
|
|
msb_repo: bool = repos_config['MSB']['ENABLE']
|
|
msb_repo_url: str = repos_config['MSB']['MIRROR']
|
|
msb_repo_mirror_packages: str = msb_repo_url
|
|
msb_repo_mirror_changelog: str = f"{'/'.join(msb_repo_url.split('/')[:-4])}/"
|
|
|
|
csb_repo: bool = repos_config['CSB']['ENABLE']
|
|
csb_repo_mirror: str = repos_config['CSB']['MIRROR']
|
|
|
|
conraid_repo: bool = repos_config['CONRAID']['ENABLE']
|
|
conraid_repo_mirror: str = repos_config['CONRAID']['MIRROR']
|
|
|
|
slackonly_repo: bool = repos_config['SLACKONLY']['ENABLE']
|
|
slackonly_repo_mirror: str = repos_config['SLACKONLY']['MIRROR']
|
|
|
|
salix_repo: bool = repos_config['SALIX']['ENABLE']
|
|
salix_repo_mirror: str = repos_config['SALIX']['MIRROR']
|
|
|
|
salix_extra_repo: bool = repos_config['SALIX_EXTRA']['ENABLE']
|
|
salix_extra_repo_mirror: str = repos_config['SALIX_EXTRA']['MIRROR']
|
|
|
|
slackel_repo: bool = repos_config['SLACKEL']['ENABLE']
|
|
slackel_repo_mirror: str = repos_config['SLACKEL']['MIRROR']
|
|
|
|
slint_repo: bool = repos_config['SLINT']['ENABLE']
|
|
slint_repo_mirror: str = repos_config['SLINT']['MIRROR']
|
|
|
|
pprkut_repo: bool = repos_config['PPRKUT']['ENABLE']
|
|
pprkut_repo_mirror: str = repos_config['PPRKUT']['MIRROR']
|
|
except (KeyError, tomlkit.exceptions.TOMLKitError) as error:
|
|
toml_errors.raise_toml_error_message(error, repositories_toml_file)
|
|
|
|
# Dictionary configurations of repositories.
|
|
repositories: ClassVar[list[str]] = {
|
|
sbo_repo_name: {
|
|
'enable': sbo_repo,
|
|
'path': sbo_repo_path,
|
|
'mirror_packages': sbo_repo_mirror,
|
|
'mirror_changelog': sbo_repo_mirror,
|
|
'slackbuilds_txt': slackbuilds_txt,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': sbo_repo_tag,
|
|
'tar_suffix': sbo_repo_tar_suffix},
|
|
|
|
ponce_repo_name: {
|
|
'enable': ponce_repo,
|
|
'path': ponce_repo_path,
|
|
'mirror_packages': ponce_repo_mirror,
|
|
'mirror_changelog': ponce_repo_mirror,
|
|
'slackbuilds_txt': slackbuilds_txt,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': ponce_repo_tag,
|
|
'tar_suffix': ponce_repo_tar_suffix},
|
|
|
|
slack_repo_name: {
|
|
'enable': slack_repo,
|
|
'path': slack_repo_path,
|
|
'mirror_packages': slack_repo_mirror,
|
|
'mirror_changelog': slack_repo_mirror,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': slack_repo_tag},
|
|
|
|
slack_extra_repo_name: {
|
|
'enable': slack_extra_repo,
|
|
'path': slack_extra_repo_path,
|
|
'mirror_packages': slack_extra_repo_mirror_packages,
|
|
'mirror_changelog': slack_extra_repo_mirror_changelog,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': slack_extra_repo_tag},
|
|
|
|
slack_patches_repo_name: {
|
|
'enable': slack_patches_repo,
|
|
'path': slack_patches_repo_path,
|
|
'mirror_packages': slack_patches_repo_mirror_packages,
|
|
'mirror_changelog': slack_patches_repo_mirror_changelog,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': slack_patches_repo_tag},
|
|
|
|
alien_repo_name: {
|
|
'enable': alien_repo,
|
|
'path': alien_repo_path,
|
|
'mirror_packages': alien_repo_mirror_packages,
|
|
'mirror_changelog': alien_repo_mirror_changelog,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': alien_repo_tag},
|
|
|
|
multilib_repo_name: {
|
|
'enable': multilib_repo,
|
|
'path': multilib_repo_path,
|
|
'mirror_packages': multilib_repo_mirror_packages,
|
|
'mirror_changelog': multilib_repo_mirror_changelog,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': multilib_repo_tag},
|
|
|
|
restricted_repo_name: {
|
|
'enable': restricted_repo,
|
|
'path': restricted_repo_path,
|
|
'mirror_packages': restricted_repo_mirror_packages,
|
|
'mirror_changelog': restricted_repo_mirror_changelog,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': restricted_repo_tag},
|
|
|
|
gnome_repo_name: {
|
|
'enable': gnome_repo,
|
|
'path': gnome_repo_path,
|
|
'mirror_packages': gnome_repo_mirror,
|
|
'mirror_changelog': gnome_repo_mirror,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': gnome_repo_tag},
|
|
|
|
msb_repo_name: {
|
|
'enable': msb_repo,
|
|
'path': msb_repo_path,
|
|
'mirror_packages': msb_repo_mirror_packages,
|
|
'mirror_changelog': msb_repo_mirror_changelog,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': msb_repo_tag},
|
|
|
|
csb_repo_name: {
|
|
'enable': csb_repo,
|
|
'path': csb_repo_path,
|
|
'mirror_packages': csb_repo_mirror,
|
|
'mirror_changelog': csb_repo_mirror,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': csb_repo_tag},
|
|
|
|
conraid_repo_name: {
|
|
'enable': conraid_repo,
|
|
'path': conraid_repo_path,
|
|
'mirror_packages': conraid_repo_mirror,
|
|
'mirror_changelog': conraid_repo_mirror,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': conraid_repo_tag},
|
|
|
|
slackonly_repo_name: {
|
|
'enable': slackonly_repo,
|
|
'path': slackonly_repo_path,
|
|
'mirror_packages': slackonly_repo_mirror,
|
|
'mirror_changelog': slackonly_repo_mirror,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': slackonly_repo_tag},
|
|
|
|
salix_repo_name: {
|
|
'enable': salix_repo,
|
|
'path': salix_repo_path,
|
|
'mirror_packages': salix_repo_mirror,
|
|
'mirror_changelog': salix_repo_mirror,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': salix_repo_tag},
|
|
|
|
salix_extra_repo_name: {
|
|
'enable': salix_extra_repo,
|
|
'path': salix_extra_repo_path,
|
|
'mirror_packages': salix_extra_repo_mirror,
|
|
'mirror_changelog': salix_extra_repo_mirror,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': salix_extra_repo_tag},
|
|
|
|
slackel_repo_name: {
|
|
'enable': slackel_repo,
|
|
'path': slackel_repo_path,
|
|
'mirror_packages': slackel_repo_mirror,
|
|
'mirror_changelog': slackel_repo_mirror,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': slackel_repo_tag},
|
|
|
|
slint_repo_name: {
|
|
'enable': slint_repo,
|
|
'path': slint_repo_path,
|
|
'mirror_packages': slint_repo_mirror,
|
|
'mirror_changelog': slint_repo_mirror,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': slint_repo_tag},
|
|
|
|
pprkut_repo_name: {
|
|
'enable': pprkut_repo,
|
|
'path': pprkut_repo_path,
|
|
'mirror_packages': pprkut_repo_mirror,
|
|
'mirror_changelog': pprkut_repo_mirror,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': pprkut_repo_tag}
|
|
}
|
|
|
|
all_repos = [name.lower() for name in repos_config.keys()]
|
|
defaults_repos = list(repositories.keys())
|
|
|
|
diff_repos = list(set(all_repos) - set(defaults_repos))
|
|
items_to_remove = ('default', 'new_packages', 'remove_packages')
|
|
for item in items_to_remove:
|
|
diff_repos.remove(item)
|
|
|
|
diff_repos = [name.upper() for name in diff_repos]
|
|
|
|
if diff_repos:
|
|
for repo, data in repos_config.items():
|
|
|
|
if repo in diff_repos:
|
|
mirror_packages: str = data.get('MIRROR', '')
|
|
mirror_changelog: str = mirror_packages
|
|
if data.get('CHANGELOG'):
|
|
mirror_changelog: str = data.get('CHANGELOG', '')
|
|
|
|
values = {
|
|
'enable': data.get('ENABLE'),
|
|
'path': Path(repositories_path, str(repo.lower())),
|
|
'mirror_packages': mirror_packages,
|
|
'mirror_changelog': mirror_changelog,
|
|
'packages_txt': packages_txt,
|
|
'checksums_md5': checksums_md5,
|
|
'changelog_txt': changelog_txt,
|
|
'repo_tag': data.get('tag', '')
|
|
}
|
|
repositories[str(repo.lower())] = values
|