Updated to choose packages

This commit is contained in:
Dimitris Zlatanidis 2024-03-25 11:26:36 +02:00
parent f2f2c782d6
commit 691b615edf
2 changed files with 35 additions and 13 deletions

View file

@ -449,10 +449,9 @@ class Menu(Configs):
removed.append(package.replace('_Removed.', '')) removed.append(package.replace('_Removed.', ''))
if removed: if removed:
print('\nFound packages that are not existing in the repository:')
packages = [pkg for pkg in packages if not pkg.endswith('_Removed.')] packages = [pkg for pkg in packages if not pkg.endswith('_Removed.')]
remove = RemovePackages(removed, self.flags) remove = RemovePackages(removed, self.flags)
remove.remove() remove.remove(upgrade=True)
packages: list = self.choose.packages(self.data, packages, command) packages: list = self.choose.packages(self.data, packages, command)

View file

@ -36,21 +36,35 @@ class RemovePackages(Configs):
self.llc: str = self.ascii.lower_left_corner self.llc: str = self.ascii.lower_left_corner
self.hl: str = self.ascii.horizontal_line self.hl: str = self.ascii.horizontal_line
def remove(self) -> None: self.option_for_yes: bool = self.utils.is_option(
('-y', '--yes'), flags)
def remove(self, upgrade=False) -> None:
self.deps_log: dict = self.utils.read_json_file(self.deps_log_file) self.deps_log: dict = self.utils.read_json_file(self.deps_log_file)
if upgrade:
self.packages: list = self.choose_packages_for_remove(self.packages, upgrade)
self.add_packages_for_remove() self.add_packages_for_remove()
self.remove_doubles_dependencies() self.remove_doubles_dependencies()
self.choose_dependencies_for_remove() self.dependencies: list = self.choose_packages_for_remove(self.dependencies)
self.add_installed_dependencies_to_remove() self.add_installed_dependencies_to_remove()
self.view.remove_packages(self.packages, self.dependencies) self.view.remove_packages(self.packages, self.dependencies)
self.found_dependent() self.found_dependent()
self.view.question()
start: float = time.time() if self.packages:
self.remove_packages() answer: str = 'y'
elapsed_time: float = time.time() - start if upgrade:
self.utils.finished_time(elapsed_time) answer: str = self.remove_question()
else:
self.view.question()
if answer in ['y', 'Y']:
start: float = time.time()
self.remove_packages()
elapsed_time: float = time.time() - start
self.utils.finished_time(elapsed_time)
def add_packages_for_remove(self) -> None: def add_packages_for_remove(self) -> None:
for package in self.packages: for package in self.packages:
@ -104,19 +118,28 @@ class RemovePackages(Configs):
self.deps_log_file.write_text(json.dumps(self.deps_log, indent=4)) self.deps_log_file.write_text(json.dumps(self.deps_log, indent=4))
def choose_dependencies_for_remove(self) -> None: def choose_packages_for_remove(self, packages: list, upgrade=False) -> list:
if self.dependencies and self.dialog: if packages and self.dialog:
height: int = 10 height: int = 10
width: int = 70 width: int = 70
list_height: int = 0 list_height: int = 0
choices: list = [] choices: list = []
title: str = " Choose dependencies you want to remove " title: str = " Choose dependencies you want to remove "
if upgrade:
title: str = ' Choose packages you want to remove '
for package in self.dependencies: for package in packages:
installed_package: str = self.utils.is_package_installed(package) installed_package: str = self.utils.is_package_installed(package)
installed_version: str = self.utils.split_package(installed_package)['version'] installed_version: str = self.utils.split_package(installed_package)['version']
choices.extend([(package, installed_version, True, f'Package: {installed_package}')]) choices.extend([(package, installed_version, True, f'Package: {installed_package}')])
text: str = f'There are {len(choices)} dependencies:' text: str = f'There are {len(choices)} dependencies:'
code, self.dependencies = self.dialogbox.checklist(text, title, height, width, list_height, choices) code, packages = self.dialogbox.checklist(text, title, height, width, list_height, choices)
os.system('clear') os.system('clear')
return packages
return []
def remove_question(self) -> str:
if not self.option_for_yes and self.ask_question:
answer: str = input('\nDo you want to remove these packages? [y/N] ')
return answer