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) self.check.exists_in_the_database(packages)
view = ViewPackage(self.flags) view = ViewPackage(self.flags, self.repository)
if self.is_binary: if self.is_binary:
view.package(self.data, packages, self.repository) view.package(self.data, packages)
else: else:
view.slackbuild(self.data, packages) view.slackbuild(self.data, packages)
raise SystemExit() raise SystemExit()

View file

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