Updated for install bins

This commit is contained in:
Dimitris Zlatanidis 2023-03-22 20:49:37 +02:00
parent 6d88c3fe40
commit 75a1fd7011
6 changed files with 204 additions and 34 deletions

25
slpkg/binaries/install.py Normal file
View file

@ -0,0 +1,25 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from slpkg.configs import Configs
from slpkg.views.views import ViewMessage
class Packages(Configs):
""" Download build and install the SlackBuilds. """
def __init__(self, packages: list, flags: list, file_pattern, mode: str):
super(Configs, self).__init__()
self.packages: list = packages
self.flags: list = flags
self.file_pattern: str = file_pattern
self.mode: str = mode
self.view_message = ViewMessage(self.flags)
self.flag_binary: list = ['-B', '--binary']
def execute(self):
self.view_message.install_packages(self.packages, [], self.mode)
self.view_message.question()

128
slpkg/binaries/queries.py Normal file
View file

@ -0,0 +1,128 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from slpkg.configs import Configs
from slpkg.blacklist import Blacklist
from slpkg.repositories import Repositories
from slpkg.models.models import session as Session
from slpkg.models.models import BinariesTable
class BinsQueries(Configs):
""" Queries class for the sbo repository. """
def __init__(self, name: str):
super(Configs, self).__init__()
self.name: str = name
self.session = Session
self.repos = Repositories()
self.black = Blacklist()
if self.name in self.black.packages():
self.name: str = ''
def all_name_packages(self) -> list:
""" Returns all the name of the binaries packages. """
pkgs: tuple = self.session.query(BinariesTable.name).all()
return [pkg[0] for pkg in pkgs]
def all_name_packages_by_repo(self, repo) -> list:
""" Returns all the binaries packages by repo. """
pkgs: tuple = self.session.query(BinariesTable.name).filter(BinariesTable.repo == repo).all()
return [pkg[0] for pkg in pkgs]
def repo(self) -> str:
repository: tuple = self.session.query(
BinariesTable.repo).filter(BinariesTable.name == self.name).first()
if repository:
return repository[0]
return ''
def package_name(self) -> str:
pkg: tuple = self.session.query(
BinariesTable.name).filter(BinariesTable.name == self.name).first()
if pkg:
return pkg[0]
return ''
def package_bin(self) -> str:
pkg: tuple = self.session.query(
BinariesTable.package).filter(BinariesTable.name == self.name).first()
if pkg:
return pkg[0]
return ''
def version(self) -> str:
pkg: tuple = self.session.query(
BinariesTable.version).filter(BinariesTable.name == self.name).first()
if pkg:
return pkg[0]
return ''
def mirror(self) -> str:
mir: tuple = self.session.query(
BinariesTable.mirror).filter(BinariesTable.name == self.name).first()
if mir:
return mir[0]
return ''
def location(self) -> str:
loc: tuple = self.session.query(
BinariesTable.location).filter(BinariesTable.name == self.name).first()
if loc:
return loc[0]
return ''
def size_comp(self) -> str:
size: tuple = self.session.query(
BinariesTable.size_comp).filter(BinariesTable.name == self.name).first()
if size:
return size[0]
return ''
def unsize_comp(self) -> str:
size: tuple = self.session.query(
BinariesTable.unsize_comp).filter(BinariesTable.name == self.name).first()
if size:
return size[0]
return ''
def required(self) -> str:
req: tuple = self.session.query(
BinariesTable.required).filter(BinariesTable.name == self.name).first()
if req:
return req[0]
return ''
def conflicts(self) -> str:
con: tuple = self.session.query(
BinariesTable.conflicts).filter(BinariesTable.name == self.name).first()
if con:
return con[0]
return ''
def suggests(self) -> str:
sug: tuple = self.session.query(
BinariesTable.suggests).filter(BinariesTable.name == self.name).first()
if sug:
return sug[0]
return ''
def description(self) -> str:
desc: tuple = self.session.query(
BinariesTable.description).filter(BinariesTable.name == self.name).first()
if desc:
return desc[0]
return ''

View file

@ -29,6 +29,8 @@ from slpkg.remove_packages import RemovePackages
from slpkg.clean_logs import CleanLogsDependencies
from slpkg.update_repository import UpdateRepository
from slpkg.binaries.install import Packages
class Argparse(Configs):
@ -40,7 +42,6 @@ class Argparse(Configs):
self.dialogbox = DialogBox()
self.utils = Utilities()
self.usage = Usage()
self.check = Check()
self.form_configs = FormConfigs()
self.color = self.colour()
self.repos = Repositories()
@ -59,8 +60,6 @@ class Argparse(Configs):
if len(self.args) == 0 or '' in self.args:
self.usage.help_short(1)
self.check.is_blacklist(self.args)
self.flag_yes: str = '--yes'
self.flag_short_yes: str = '-y'
self.flag_jobs: str = '--jobs'
@ -163,7 +162,7 @@ class Argparse(Configs):
self.flag_binary,
self.flag_short_binary,
self.flag_bin_repository,
self.flag_short_bin_repository,
self.flag_short_bin_repository
],
'configs': [],
'clean-logs': [
@ -187,7 +186,7 @@ class Argparse(Configs):
self.flag_no_silent,
self.flag_short_no_silent,
self.flag_parallel,
self.flag_short_parallel,
self.flag_short_parallel
],
'install': [
self.flag_yes,
@ -204,10 +203,14 @@ class Argparse(Configs):
self.flag_short_search,
self.flag_no_silent,
self.flag_short_no_silent,
self.flag_binary,
self.flag_short_binary,
self.flag_bin_repository,
self.flag_short_bin_repository,
self.flag_file_pattern,
self.flag_short_file_pattern,
self.flag_parallel,
self.flag_short_parallel,
self.flag_short_parallel
],
'download': [
self.flag_yes,
@ -219,7 +222,7 @@ class Argparse(Configs):
self.flag_directory,
self.flag_short_directory,
self.flag_parallel,
self.flag_short_parallel,
self.flag_short_parallel
],
'remove': [
self.flag_resolve_off,
@ -287,6 +290,9 @@ class Argparse(Configs):
self.move_options()
self.invalid_options()
self.check = Check(self.flags)
self.check.is_blacklist(self.args[1:])
def invalid_options(self) -> None:
""" Checks for invalid options. """
invalid, commands, repeat = [], [], []
@ -503,7 +509,6 @@ class Argparse(Configs):
def check_updates(self) -> None:
if len(self.args) == 1:
self.check.is_empty_database()
check = CheckUpdates(self.flags)
check.updates()
raise SystemExit()
@ -579,10 +584,14 @@ class Argparse(Configs):
packages: list = self.choose_packages(packages, command)
self.check.exists_in_the_database(packages)
self.check.is_package_unsupported(packages)
install = Slackbuilds(packages, self.flags, self.file_pattern, mode=command)
install.execute()
if self.utils.is_option([self.flag_binary, self.flag_short_binary], self.flags):
install = Packages(packages, self.flags, self.file_pattern, mode=command)
install.execute()
else:
self.check.is_package_unsupported(packages)
install = Slackbuilds(packages, self.flags, self.file_pattern, mode=command)
install.execute()
raise SystemExit()
self.usage.help_short(1)

View file

@ -2,6 +2,7 @@
# -*- coding: utf-8 -*-
from typing import Union
from sqlalchemy import inspect
from slpkg.configs import Configs
from slpkg.blacklist import Blacklist
@ -28,6 +29,15 @@ class SBoQueries(Configs):
if self.repos.ponce_repo:
self.sbo_table = PonceTable
def repo_name(self):
""" Returns the repo name by the table. """
table = inspect(self.sbo_table)
repo = self.repos.sbo_repo_name
if table.tables[0].name == 'poncetable':
repo = self.repos.ponce_repo_name
return repo
def sbos(self) -> list:
""" Returns all the slackbuilds. """
sbos: tuple = self.session.query(self.sbo_table.name).all() # type: ignore

View file

@ -4,7 +4,6 @@
import shutil
from slpkg.configs import Configs
from slpkg.repositories import Repositories
class Ascii(Configs):
@ -12,7 +11,6 @@ class Ascii(Configs):
def __init__(self):
super(Configs, self).__init__()
self.color = self.colour()
self.repos = Repositories()
self.columns, self.rows = shutil.get_terminal_size()
self.vertical_line: str = '|'
@ -51,10 +49,6 @@ class Ascii(Configs):
self.bgreen: str = f'{self.bold}{self.green}'
self.bred: str = f'{self.bold}{self.red}'
self.repo: str = self.repos.sbo_repo_name
if self.repos.ponce_repo:
self.repo: str = self.repos.ponce_repo_name
def draw_package_title_box(self, message: str, title: str) -> None:
""" Drawing package title box. """
middle_title: int = int((self.columns / 2) - len(title) + 6)
@ -75,11 +69,11 @@ class Ascii(Configs):
print(f'{self.bgreen}{self.vertical_line}{self.endc} Package:' + ' ' * 27 + 'Version:' +
' ' * (self.columns - 57) + f'Repository{self.bgreen} {self.vertical_line}{self.endc}')
def draw_view_package(self, package: str, version: str, color: str) -> None:
def draw_view_package(self, package: str, version: str, color: str, repo: str) -> None:
""" Draw nad print the packages. """
print(f'{self.bgreen}{self.vertical_line} {self.bold}{color}{package}{self.endc}' + ' ' * (35 - len(package)) +
f'{self.bgreen}{version}' + ' ' * ((self.columns - 39) - len(version) - len(self.repo)) +
f'{self.blue}{self.repo} {self.bgreen}{self.vertical_line}{self.endc}')
f'{self.bgreen}{version}' + ' ' * ((self.columns - 39) - len(version) - len(repo)) +
f'{self.blue}{repo} {self.bgreen}{self.vertical_line}{self.endc}')
def draw_log_package(self, package: str) -> None:
""" Drawing and print logs packages. """

View file

@ -14,6 +14,8 @@ from slpkg.repositories import Repositories
from slpkg.models.models import LogsDependencies
from slpkg.models.models import session as Session
from slpkg.binaries.queries import BinsQueries
class ViewMessage(Configs):
""" Print some messages before. """
@ -40,14 +42,21 @@ class ViewMessage(Configs):
self.flag_resolve_off: list = ['-o', '--resolve-off']
self.flag_reinstall: list = ['-r', '--reinstall']
self.flag_yes: list = ['-y', '--yes']
self.flag_binary: list = ['-B', '--binary']
self.file_pattern: str = f'*{self.repos.repo_tag}'
self.all_installed: list = list(self.utils.all_installed_names(self.file_pattern))
def view_packages(self, package: str, version: str, mode: str) -> None:
def view_packages(self, package: str, mode: str) -> None:
""" Printing the main packages. """
color: str = self.red
if self.utils.is_option(self.flag_binary, self.flags):
version: str = BinsQueries(package).version()
repo: str = BinsQueries(package).repo()
else:
version: str = SBoQueries(package).version()
repo: str = SBoQueries('').repo_name()
if mode in ['install', 'download']:
color: str = self.cyan
@ -61,7 +70,7 @@ class ViewMessage(Configs):
not self.utils.is_package_upgradeable(package, self.file_pattern)):
color = self.grey
self.ascii.draw_view_package(package, version, color)
self.ascii.draw_view_package(package, version, color, repo)
def view_skipping_packages(self, sbo: str, version: str) -> None:
""" Print the skipping packages. """
@ -72,16 +81,14 @@ class ViewMessage(Configs):
self.ascii.draw_package_title_box('The following packages will be build:', 'Build Packages')
for sbo in slackbuilds:
version: str = SBoQueries(sbo).version()
self.view_packages(sbo, version, mode='build')
self.view_packages(sbo, mode='build')
if dependencies:
self.ascii.draw_middle_line()
self.ascii.draw_dependency_line()
for sbo in dependencies:
version: str = SBoQueries(sbo).version()
self.view_packages(sbo, version, mode='build')
self.view_packages(sbo, mode='build')
self.summary(slackbuilds, dependencies, option='build')
@ -94,16 +101,14 @@ class ViewMessage(Configs):
self.ascii.draw_package_title_box('The following packages will be installed or upgraded:', title)
for pkg in packages:
version: str = SBoQueries(pkg).version()
self.view_packages(pkg, version, mode=mode)
self.view_packages(pkg, mode=mode)
if dependencies:
self.ascii.draw_middle_line()
self.ascii.draw_dependency_line()
for pkg in dependencies:
version: str = SBoQueries(pkg).version()
self.view_packages(pkg, version, mode=mode)
self.view_packages(pkg, mode=mode)
self.summary(packages, dependencies, option=mode)
@ -115,8 +120,7 @@ class ViewMessage(Configs):
self.download_only: Path = directory
for sbo in slackbuilds:
version: str = SBoQueries(sbo).version()
self.view_packages(sbo, version, mode='download')
self.view_packages(sbo, mode='download')
self.summary(slackbuilds, dependencies=[], option='download')
@ -165,10 +169,10 @@ class ViewMessage(Configs):
if self.utils.is_package_installed(name, self.file_pattern):
for package in installed:
pkg: str = self.utils.split_binary_pkg(package)[0]
if pkg == name:
self.installed_packages.append(package)
version = self.utils.split_binary_pkg(package)[1]
self.view_packages(pkg, version, mode='remove')
self.view_packages(pkg, mode='remove')
def choose_dependencies_for_remove(self, dependencies: list) -> list:
""" Choose packages for remove using the dialog box. """