Added dialog for remove dependencies

This commit is contained in:
Dimitris Zlatanidis 2022-12-25 18:18:41 +02:00
parent 36dda5a7de
commit a07afc46df
2 changed files with 36 additions and 6 deletions

View file

@ -1,7 +1,6 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import subprocess
from slpkg.configs import Configs

View file

@ -7,6 +7,7 @@ from slpkg.configs import Configs
from slpkg.queries import SBoQueries
from slpkg.utilities import Utilities
from slpkg.blacklist import Blacklist
from slpkg.dialog_box import DialogBox
from slpkg.models.models import LogsDependencies
from slpkg.models.models import session as Session
@ -21,6 +22,7 @@ class ViewMessage:
self.session = Session
self.utils = Utilities()
self.black = Blacklist()
self.dialog = DialogBox()
self.installed_packages = []
def build_packages(self, slackbuilds: list, dependencies: list):
@ -68,7 +70,6 @@ class ViewMessage:
print('The following packages will be removed:\n')
slackbuilds, dependencies, deps = [], [], []
for pkg in packages:
self._view_removed(pkg)
slackbuilds.append(pkg)
requires = self.session.query(
@ -78,18 +79,48 @@ class ViewMessage:
if requires:
deps.append(requires)
for i in range(0, len(deps)):
for dep in deps[i][0].split():
dependencies.append(dep)
if deps and '--resolve-off' not in self.flags:
dependencies = self.choose_dependencies_for_remove(dependencies)
for pkg in slackbuilds:
self._view_removed(pkg)
if deps and '--resolve-off' not in self.flags:
print('\nDependencies:')
for i in range(0, len(deps)):
for dep in deps[i][0].split():
self._view_removed(dep)
dependencies.append(dep)
for pkg in dependencies:
self._view_removed(pkg)
self._view_total(slackbuilds, dependencies, option='remove')
return self.installed_packages, dependencies
def choose_dependencies_for_remove(self, dependencies):
""" Choose packages for upgrade. """
height = 10
width = 70
list_height = 0
choices = []
title = " Uncheck dependencies if you don't want to remove "
for package in dependencies:
repo_ver = SBoQueries(package).version()
choices += [(package, repo_ver, True)]
text = f'There are {len(choices)} dependencies:'
code, tags = self.dialog.checklist(text, title, height, width, list_height, choices, dependencies)
if not code:
return dependencies
os.system('clear')
return tags
def _view_download(self, sbo: str, version: str):
""" View packages for download only. """
color = self.colors()