mirror of
https://gitlab.com/dslackw/slpkg.git
synced 2025-02-07 08:46:21 +01:00
Updated for install bins
This commit is contained in:
parent
6d88c3fe40
commit
75a1fd7011
6 changed files with 204 additions and 34 deletions
25
slpkg/binaries/install.py
Normal file
25
slpkg/binaries/install.py
Normal 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
128
slpkg/binaries/queries.py
Normal 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 ''
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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. """
|
||||
|
|
|
@ -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. """
|
||||
|
|
Loading…
Add table
Reference in a new issue