Updated for view packages

This commit is contained in:
Dimitris Zlatanidis 2023-05-06 17:32:36 +03:00
parent d57c8b0af9
commit d275abcb79
2 changed files with 70 additions and 113 deletions

View file

@ -695,10 +695,10 @@ class Argparse(Configs):
self.check.exists_in_the_database(packages)
view = ViewPackage(self.flags)
view = ViewPackage(self.flags, self.repository)
if self.is_binary:
view.package(self.data, packages, self.repository)
view.package(self.data, packages)
else:
view.slackbuild(self.data, packages)
raise SystemExit()

View file

@ -7,142 +7,99 @@ from slpkg.configs import Configs
from slpkg.utilities import Utilities
from slpkg.repositories import Repositories
from slpkg.models.models import session as Session
from slpkg.models.models import (SBoTable, PonceTable,
BinariesTable, LastRepoUpdated)
class ViewPackage(Configs):
""" View the repository packages. """
def __init__(self, flags: list):
def __init__(self, flags: list, repository: str):
super(Configs, self).__init__()
self.flags: list = flags
self.repository: str = repository
self.utils = Utilities()
self.repos = Repositories()
self.session = Session
# Switch between sbo and ponce repository.
self.sbo_table = SBoTable
self.repo_url: str = self.repos.sbo_repo_mirror[0]
self.repo_path: Path = self.repos.sbo_repo_path
self.repo_tar_suffix: str = self.repos.sbo_repo_tar_suffix
if self.repos.ponce_repo:
self.sbo_table = PonceTable
self.repo_url: str = self.repos.ponce_repo_mirror[0]
self.repo_path: Path = self.repos.ponce_repo_path
self.repo_tar_suffix: str = ''
self.option_for_pkg_version: bool = self.utils.is_option(
['-p', '--pkg-version'], flags)
def slackbuild(self, data: dict, slackbuilds: list) -> None:
""" View the packages from the repository. """
slackbuilds: list = self.utils.apply_package_pattern(data, slackbuilds)
""" View slackbuild packages information. """
repo: dict = {
self.repos.sbo_repo_name: self.repos.sbo_repo_tar_suffix,
self.repos.ponce_repo_name: ''
}
repo_tar_suffix: str = repo[self.repository]
for sbo in slackbuilds:
for name, value in data.items():
if sbo == name or sbo == '*':
info: list = self.session.query(
self.sbo_table.name,
self.sbo_table.version,
self.sbo_table.requires,
self.sbo_table.download,
self.sbo_table.download64,
self.sbo_table.md5sum,
self.sbo_table.md5sum64,
self.sbo_table.files,
self.sbo_table.short_description,
self.sbo_table.location
).filter(self.sbo_table.name == sbo).first()
path = Path(self.repos.repositories[self.repository][1], value[0], name, 'README')
readme = self.utils.read_file(path)
path = Path(self.repo_path, info[9], info[0], 'README')
readme = self.utils.read_file(path)
path = Path(self.repos.repositories[self.repository][1], value[0], name, f'{name}.info')
info_file = self.utils.read_file(path)
path = Path(self.repo_path, info[9], info[0], f'{info[0]}.info')
info_file = self.utils.read_file(path)
repo_build_tag = self.utils.read_sbo_build_tag(name, value[0])
mirror: str = self.repos.repositories[self.repository][2][0]
repo_build_tag = self.utils.read_sbo_build_tag(info[0], info[9])
maintainer, email, homepage = '', '', ''
for line in info_file:
if line.startswith('HOMEPAGE'):
homepage: str = line[10:-2].strip()
if line.startswith('MAINTAINER'):
maintainer: str = line[12:-2].strip()
if line.startswith('EMAIL'):
email: str = line[7:-2].strip()
maintainer, email, homepage = '', '', ''
for line in info_file:
if line.startswith('HOMEPAGE'):
homepage: str = line[10:-2].strip()
if line.startswith('MAINTAINER'):
maintainer: str = line[12:-2].strip()
if line.startswith('EMAIL'):
email: str = line[7:-2].strip()
deps: str = (', '.join([f'{self.cyan}{pkg}' for pkg in value[7].split()]))
if self.option_for_pkg_version:
deps: str = (', '.join([f'{self.cyan}{pkg}{self.endc} {self.yellow}{data[pkg][2]}'
f'{self.green}' for pkg in value[7].split()]))
deps: str = (', '.join([f'{self.cyan}{pkg}' for pkg in info[2].split()]))
if self.option_for_pkg_version:
deps: str = (', '.join([f'{self.cyan}{pkg}{self.endc} {self.yellow}{data[pkg][2]}'
f'{self.green}' for pkg in info[2].split()]))
print(f'Name: {self.green}{info[0]}{self.endc}\n'
f'Version: {self.green}{info[1]}{self.endc}\n'
f'Build: {self.green}{repo_build_tag}{self.endc}\n'
f'Requires: {self.green}{deps}{self.endc}\n'
f'Homepage: {self.blue}{homepage}{self.endc}\n'
f'Download SlackBuild: {self.blue}{self.repo_url}{info[9]}/{info[0]}'
f'{self.repo_tar_suffix}{self.endc}\n'
f'Download sources: {self.blue}{info[3]}{self.endc}\n'
f'Download_x86_64 sources: {self.blue}{info[4]}{self.endc}\n'
f'Md5sum: {self.yellow}{info[5]}{self.endc}\n'
f'Md5sum_x86_64: {self.yellow}{info[6]}{self.endc}\n'
f'Files: {self.green}{info[7]}{self.endc}\n'
f'Description: {self.green}{info[8]}{self.endc}\n'
f'Slackware: {self.cyan}{self.repo_url.split("/")[-1]}{self.endc}\n'
f'Category: {self.red}{info[9]}{self.endc}\n'
f'SBo url: {self.blue}{self.repo_url}{info[9]}/{info[0]}{self.endc}\n'
f'Maintainer: {self.yellow}{maintainer}{self.endc}\n'
f'Email: {self.yellow}{email}{self.endc}\n'
f'\nREADME: {self.cyan}{"".join(readme)}{self.endc}')
def package(self, data: dict, packages: list, repo: str) -> None:
packages: list = self.utils.apply_package_pattern(data, packages)
print(f'Name: {self.green}{name}{self.endc}\n'
f'Version: {self.green}{value[2]}{self.endc}\n'
f'Build: {self.green}{repo_build_tag}{self.endc}\n'
f'Requires: {self.green}{deps}{self.endc}\n'
f'Homepage: {self.blue}{homepage}{self.endc}\n'
f'Download SlackBuild: {self.blue}{mirror}'
f'{value[0]}/{name}{repo_tar_suffix}{self.endc}\n'
f'Download sources: {self.blue}{value[3]}{self.endc}\n'
f'Download_x86_64 sources: {self.blue}{value[4]}{self.endc}\n'
f'Md5sum: {self.yellow}{value[5]}{self.endc}\n'
f'Md5sum_x86_64: {self.yellow}{value[6]}{self.endc}\n'
f'Files: {self.green}{value[1]}{self.endc}\n'
f'Description: {self.green}{value[8]}{self.endc}\n'
f'Category: {self.red}{value[0]}{self.endc}\n'
f'SBo url: {self.blue}{mirror}{value[0]}/{name}{self.endc}\n'
f'Maintainer: {self.yellow}{maintainer}{self.endc}\n'
f'Email: {self.yellow}{email}{self.endc}\n'
f'\nREADME: {self.cyan}{"".join(readme)}{self.endc}')
def package(self, data: dict, packages: list) -> None:
""" View binary packages information. """
for package in packages:
for name, value in data.items():
if package == name or package == '*':
info: list = self.session.query(
BinariesTable.repo,
BinariesTable.name,
BinariesTable.version,
BinariesTable.package,
BinariesTable.checksum,
BinariesTable.mirror,
BinariesTable.location,
BinariesTable.size_comp,
BinariesTable.size_uncomp,
BinariesTable.required,
BinariesTable.conflicts,
BinariesTable.suggests,
BinariesTable.description,
).filter(BinariesTable.name == package).where(
BinariesTable.repo == repo).first()
deps: str = (', '.join([f'{self.cyan}{pkg}' for pkg in value[6].split()]))
if self.option_for_pkg_version:
deps: str = (', '.join([f'{self.cyan}{pkg}{self.endc} {self.yellow}{data[pkg][0]}'
f'{self.green}' for pkg in value[6].split()]))
build: str = self.utils.split_binary_pkg(info[3])[3]
last: str = self.session.query(
LastRepoUpdated.date).where(
LastRepoUpdated.repo == repo).first()
deps: str = (', '.join([f'{self.cyan}{pkg}' for pkg in info[9].split()]))
if self.option_for_pkg_version:
deps: str = (', '.join([f'{self.cyan}{pkg}{self.endc} {self.yellow}{data[pkg][0]}'
f'{self.green}' for pkg in info[9].split()]))
print(f'Repository: {self.yellow}{info[0]}{self.endc}\n'
f'Last Updated: {self.violet}{last[0]}{self.endc}\n'
f'Name: {self.green}{info[1]}{self.endc}\n'
f'Version: {self.green}{info[2]}{self.endc}\n'
f'Build: {self.green}{build}{self.endc}\n'
f'Package: {self.cyan}{info[3]}{self.endc}\n'
f'Download: {self.blue}{info[5]}{info[6]}/{info[3]}{self.endc}\n'
f'Md5sum: {info[4]}\n'
f'Mirror: {self.blue}{info[5]}{self.endc}\n'
f'Location: {self.red}{info[6]}{self.endc}\n'
f'Size Comp: {info[7]}\n'
f'Size Uncomp: {info[8]}\n'
f'Requires: {self.green}{deps}{self.endc}\n'
f'Conflicts: {info[10]}\n'
f'Suggests: {info[11]}\n'
f'Description: {info[12]}\n')
print(f'Name: {self.green}{name}{self.endc}\n'
f'Version: {self.green}{value[0]}{self.endc}\n'
f'Package: {self.cyan}{value[1]}{self.endc}\n'
f'Download: {self.blue}{value[2]}{value[3]}/{value[1]}{self.endc}\n'
f'Md5sum: {value[10]}\n'
f'Mirror: {self.blue}{value[2]}{self.endc}\n'
f'Location: {self.red}{value[3]}{self.endc}\n'
f'Size Comp: {value[4]}\n'
f'Size Uncomp: {value[5]}\n'
f'Requires: {self.green}{deps}{self.endc}\n'
f'Conflicts: {value[7]}\n'
f'Suggests: {value[8]}\n'
f'Description: {value[9]}\n')