Updated for repos

This commit is contained in:
Dimitris Zlatanidis 2024-03-14 21:32:22 +02:00
parent cff2bb79e7
commit 9c566be3d1
10 changed files with 21 additions and 123 deletions

View file

@ -14,7 +14,6 @@ from slpkg.utilities import Utilities
from slpkg.dialog_box import DialogBox
from slpkg.downloader import Downloader
from slpkg.views.asciibox import AsciiBox
from slpkg.logging_deps import LoggingDeps
from slpkg.repositories import Repositories
from slpkg.multi_process import MultiProcess
from slpkg.binaries.required import Required
@ -33,7 +32,6 @@ class Packages(Configs):
self.repos = Repositories()
self.dialogbox = DialogBox()
self.multi_proc = MultiProcess(flags)
self.logs_deps = LoggingDeps(repository, data)
self.upgrade = Upgrade(repository, data)
self.view = View(flags, repository, data)
self.check_md5 = Md5sum(flags)
@ -156,10 +154,6 @@ class Packages(Configs):
command: str = f'{self.slackware_command} {self.tmp_slpkg}/{package}'
self.multi_proc.process(command, package, self.progress_message)
if not self.option_for_resolve_off:
name: str = self.utils.split_package(Path(package).stem)['name']
self.logs_deps.logging(name)
def set_progress_message(self) -> None:
if self.mode == 'upgrade' or self.option_for_reinstall:
self.progress_message: str = f'{self.cyan}Upgrading{self.endc}'

View file

@ -21,7 +21,6 @@ class Check(Configs):
self.repos = Repositories()
self.count_rows: int = 0
self.is_binary: bool = self.utils.is_binary_repo(repository)
def package_exists_in_the_database(self, packages: list, data: dict) -> None:
not_packages: list = []

View file

@ -6,6 +6,7 @@ import os
from slpkg.configs import Configs
from slpkg.utilities import Utilities
from slpkg.dialog_box import DialogBox
from slpkg.repositories import Repositories
class Choose(Configs):
@ -17,14 +18,13 @@ class Choose(Configs):
self.utils = Utilities()
self.dialogbox = DialogBox()
self.repos = Repositories()
self.choices: list = []
self.height: int = 10
self.width: int = 70
self.list_height: int = 0
self.is_binary: bool = self.utils.is_binary_repo(repository)
def packages(self, data: dict, packages: list, method: str) -> list:
if self.dialog:
title: str = f' Choose packages you want to {method} '
@ -73,7 +73,7 @@ class Choose(Configs):
inst_package_build: str = self.utils.split_package(inst_package)['build']
repo_ver: str = data[package]['version']
if self.is_binary:
if self.repository not in [self.repos.sbo_repo_name, self.repos.ponce_repo_name]:
binary_package: str = data[package]['package']
repo_build_tag: str = self.utils.split_package(binary_package[:-4])['build']
else:

View file

@ -15,7 +15,6 @@ class Cleanings(Configs):
def __init__(self):
super(Configs, self).__init__()
self.session = Session
self.view = View()
self.repos = Repositories()

View file

@ -1,38 +0,0 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from slpkg.utilities import Utilities
from slpkg.binaries.required import Required
from slpkg.sbos.dependencies import Requires
class LoggingDeps:
""" Logging installed dependencies. """
def __init__(self, repository: str, data: dict):
self.data: dict = data
self.utils = Utilities()
self.is_binary: bool = self.utils.is_binary_repo(repository)
def logging(self, name: str) -> None:
exist = self.session.query(LogsDependencies.name).filter(
LogsDependencies.name == name).first()
if self.is_binary:
requires: tuple = Required(self.data, name).resolve()
else:
requires: tuple = Requires(self.data, name).resolve()
# Update the dependencies if exist else create it.
if exist:
self.session.query(
LogsDependencies).filter(
LogsDependencies.name == name).update(
{LogsDependencies.requires: ' '.join(requires)})
elif requires:
dependencies: list = LogsDependencies(name=name, requires=' '.join(requires))
self.session.add(dependencies)
self.session.commit()

View file

@ -299,7 +299,6 @@ class Menu(Configs):
self.invalid_options()
self.check_for_repositories()
self.is_binary: bool = self.utils.is_binary_repo(self.repository)
self.check = Check(self.repository)
self.choose = Choose(self.repository)
@ -318,8 +317,8 @@ class Menu(Configs):
print('\rDatabase loading... ', end='')
json_data: Path = Path(f'{self.repos.repositories_path}/{self.repository}', self.repos.data_json)
if json_data.is_file():
self.data: dict = json.loads(json_data.read_text())
self.data: dict = json.loads(json_data.read_text())
print(f'{self.yellow}{self.ascii.done}{self.endc}')
def check_for_repositories(self) -> None:
@ -473,7 +472,7 @@ class Menu(Configs):
print('\nEverything is up-to-date!\n')
raise SystemExit(0)
if self.is_binary:
if self.repository not in [self.repos.sbo_repo_name, self.repos.ponce_repo_name]:
install = Packages(
self.repository, self.data, packages, self.flags, mode=command
)
@ -542,7 +541,7 @@ class Menu(Configs):
self.check.package_exists_in_the_database(packages, self.data)
if self.is_binary:
if self.repository not in [self.repos.sbo_repo_name, self.repos.ponce_repo_name]:
install = Packages(self.repository, self.data, packages, self.flags, mode=command)
install.execute()
else:
@ -622,7 +621,7 @@ class Menu(Configs):
view = ViewPackage(self.flags, self.repository)
if self.is_binary:
if self.repository not in [self.repos.sbo_repo_name, self.repos.ponce_repo_name]:
view.package(self.data, packages)
else:
view.slackbuild(self.data, packages)

View file

@ -4,7 +4,6 @@
import os
import time
import shutil
import logging
from pathlib import Path
from collections import OrderedDict
@ -19,11 +18,9 @@ from slpkg.dialog_box import DialogBox
from slpkg.downloader import Downloader
from slpkg.error_messages import Errors
from slpkg.views.asciibox import AsciiBox
from slpkg.logging_deps import LoggingDeps
from slpkg.repositories import Repositories
from slpkg.multi_process import MultiProcess
from slpkg.sbos.dependencies import Requires
from slpkg.logging_config import LoggingConfig
class Slackbuilds(Configs):
@ -42,7 +39,6 @@ class Slackbuilds(Configs):
self.utils = Utilities()
self.dialogbox = DialogBox()
self.multi_proc = MultiProcess(flags)
self.logs_deps = LoggingDeps(repository, data)
self.upgrade = Upgrade(repository, data)
self.view = View(flags, repository, data)
self.check_md5 = Md5sum(flags)
@ -75,11 +71,6 @@ class Slackbuilds(Configs):
if self.repos.repositories[repository]['patch_tag']:
self.repo_tag: str = self.repos.repositories[repository]['repo_tag']
logging.basicConfig(filename=LoggingConfig.log_file,
filemode=LoggingConfig.filemode,
encoding=LoggingConfig.encoding,
level=LoggingConfig.level)
def execute(self) -> None:
self.creating_dependencies_list()
self.remove_duplicate_from_dependencies_list()
@ -201,9 +192,6 @@ class Slackbuilds(Configs):
if self.mode in ('install', 'upgrade'):
self.install_package(sbo)
if not self.option_for_resolve_off:
self.logs_deps.logging(sbo)
else:
installed_package: str = self.utils.is_package_installed(sbo)
self.view.skipping_packages(installed_package)
@ -231,9 +219,6 @@ class Slackbuilds(Configs):
try:
return max(packages)
except ValueError:
logger = logging.getLogger(LoggingConfig.date_time)
logger.exception(f'{self.__class__.__name__}: '
f'{self.__class__.find_package_for_install.__name__}')
self.errors.raise_error_message(f"Package '{name}' not found for install", exit_status=20)
def build_the_script(self, path: Path, name: str) -> None:

View file

@ -24,8 +24,6 @@ class Upgrade(Configs):
self.repos = Repositories()
self.rules = Rules()
self.is_binary: bool = self.utils.is_binary_repo(repository)
logging.basicConfig(filename=LoggingConfig.log_file,
filemode=LoggingConfig.filemode,
encoding=LoggingConfig.encoding,
@ -52,7 +50,7 @@ class Upgrade(Configs):
inst_package_build: str = self.utils.split_package(inst_package)['build']
repo_package_version: str = self.data[name]['version']
if self.is_binary and self.data.get(name):
if self.repository not in [self.repos.sbo_repo_name, self.repos.ponce_repo_name] and self.data.get(name):
repo_package: str = self.data[name]['package']
repo_package_build: str = self.utils.split_package(repo_package)['build']
else:

View file

@ -6,17 +6,15 @@ import re
import time
import shutil
import fnmatch
import logging
import subprocess
from pathlib import Path
from typing import Generator
from typing import Generator, Union
from slpkg.configs import Configs
from slpkg.blacklist import Blacklist
from slpkg.views.version import Version
from slpkg.error_messages import Errors
from slpkg.repositories import Repositories
from slpkg.logging_config import LoggingConfig
class Utilities(Configs):
@ -32,13 +30,6 @@ class Utilities(Configs):
self.prog_version = Version()
self.installed_packages: dict = dict(self.all_installed())
self.process_log_date = LoggingConfig.date.replace('/', '_')
self.process_log_time = LoggingConfig.time.replace(':', '_')
logging.basicConfig(filename=LoggingConfig.log_file,
filemode=LoggingConfig.filemode,
encoding=LoggingConfig.encoding,
level=LoggingConfig.level)
def is_package_installed(self, name: str) -> str:
""" Returns the installed package binary. """
@ -130,11 +121,6 @@ class Utilities(Configs):
package = package.split('#')[0].strip()
yield package
except FileNotFoundError:
logger = logging.getLogger(LoggingConfig.date_time)
logger.exception(
f'{self.__class__.__name__}: '
f'{self.__class__.read_packages_from_file.__name__}'
)
self.errors.raise_error_message(f"No such file or directory: '{file}'", exit_status=20)
def read_text_file(self, file: Path) -> list:
@ -143,42 +129,22 @@ class Utilities(Configs):
with open(file, 'r', encoding='utf-8', errors='replace') as text_file:
return text_file.readlines()
except FileNotFoundError:
logger = logging.getLogger(LoggingConfig.date_time)
logger.exception(
f'{self.__class__.__name__}: '
f'{self.__class__.read_text_file.__name__}'
)
self.errors.raise_error_message(f"No such file or directory: '{file}'", exit_status=20)
def process(self, command: str, stderr=None, stdout=None, filename=None) -> None:
@staticmethod
def process(command: str, stderr=None, stdout=None) -> None:
""" Handle the processes. """
output = tee = ''
if filename and filename.endswith('.SlackBuild') and self.process_log:
self.header_process_log(filename)
tee: str = (
f' | tee -a {self.slpkg_log_path}/{filename}_'
f'{self.process_log_date}_{self.process_log_time}.log'
)
output: Union = 0
try:
output = subprocess.run(f'{command}{tee}', shell=True, stderr=stderr, stdout=stdout)
output = subprocess.run(f'{command}', shell=True, stderr=stderr, stdout=stdout)
except subprocess.CalledProcessError as error:
logger = logging.getLogger(LoggingConfig.date_time)
logger.exception(
f'{self.__class__.__name__}: '
f'{self.__class__.process.__name__}: '
f'{error}'
)
print(error)
except KeyboardInterrupt:
raise SystemExit(1)
if output.returncode != 0:
raise SystemExit(output.returncode)
def header_process_log(self, filename: str) -> None:
""" Creates the build log file and the header. """
with open(f'{self.slpkg_log_path}/{filename}_{self.process_log_date}_{self.process_log_time}.log', 'w') as f:
f.write(f'{LoggingConfig.date_time}: {filename}: Version: {self.prog_name} {self.prog_version.version}\n')
def get_file_size(self, file: Path) -> str:
""" Get the local file size and converted to units. """
size: int = file.stat().st_size
@ -209,11 +175,6 @@ class Utilities(Configs):
if [black for black in blacklist if fnmatch.fnmatch(name, black)]:
return True
def is_binary_repo(self, repo: str) -> bool:
""" Returns True if the repository is binary. """
if repo in tuple(self.repos.repositories.keys())[2:]:
return True
@staticmethod
def change_owner_privileges(folder: Path) -> None:
""" Changes the owner privileges. """

View file

@ -9,6 +9,7 @@ from slpkg.upgrade import Upgrade
from slpkg.utilities import Utilities
from slpkg.dialog_box import DialogBox
from slpkg.views.asciibox import AsciiBox
from slpkg.repositories import Repositories
class View(Configs):
@ -21,6 +22,7 @@ class View(Configs):
self.repository = repository
self.data: dict = data
self.repos = Repositories()
self.utils = Utilities()
self.dialogbox = DialogBox()
self.ascii = AsciiBox()
@ -28,7 +30,6 @@ class View(Configs):
self.download_only = None
self.summary_message: str = ''
self.is_binary: bool = self.utils.is_binary_repo(repository)
self.option_for_resolve_off: bool = self.utils.is_option(
('-O', '--resolve-off'), flags)
@ -106,7 +107,7 @@ class View(Configs):
color: str = self.yellow
version: str = self.data[package]['version']
if self.is_binary:
if self.repository not in [self.repos.sbo_repo_name, self.repos.ponce_repo_name]:
size: str = self.utils.convert_file_sizes(int(self.data[package]['size_comp']))
self.ascii.draw_package_line(package, version, size, color, self.repository)
@ -118,7 +119,7 @@ class View(Configs):
installed: str = self.utils.is_package_installed(package)
upgradable: bool = self.upgrade.is_package_upgradeable(package)
if self.is_binary:
if self.repository not in [self.repos.sbo_repo_name, self.repos.ponce_repo_name]:
size: str = self.utils.convert_file_sizes(int(self.data[package]['size_comp']))
if installed:
@ -139,7 +140,7 @@ class View(Configs):
color: str = self.cyan
version: str = self.data[package]['version']
if self.is_binary:
if self.repository not in [self.repos.sbo_repo_name, self.repos.ponce_repo_name]:
size: str = self.utils.convert_file_sizes(int(self.data[package]['size_comp']))
self.ascii.draw_package_line(package, version, size, color, self.repository)
@ -168,7 +169,7 @@ class View(Configs):
for pkg in packages:
installed: str = self.utils.is_package_installed(pkg)
if self.is_binary:
if self.repository not in [self.repos.sbo_repo_name, self.repos.ponce_repo_name]:
size_comp += int(self.data[pkg]['size_comp'])
size_uncomp += int(self.data[pkg]['size_uncomp'])