From 044844ae0994600223de3acfc968ef3464261766 Mon Sep 17 00:00:00 2001 From: 24_ChernovaSS <24_ChernovaSS@iux.local> Date: Thu, 7 May 2026 23:27:06 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=83=20rem?= =?UTF-8?q?ove=20=D0=B4=D0=BB=D1=8F=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mypkg/cli/main.py | 14 +++++++++++++- mypkg/core/package_manager.py | 25 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/mypkg/cli/main.py b/mypkg/cli/main.py index 42a5026..16435e6 100644 --- a/mypkg/cli/main.py +++ b/mypkg/cli/main.py @@ -2,7 +2,7 @@ import argparse import sys from ..core.package_manager import PackageManager -from ..utils.colors import print_info, print_package +from ..utils.colors import print_info, print_package, print_error def main(): @@ -17,9 +17,17 @@ def main(): subparsers = parser.add_subparsers(dest='command', help='Команды') + # install install_parser = subparsers.add_parser('install', help='Установить пакет') install_parser.add_argument('package', help='Имя пакета') + # remove (НОВАЯ КОМАНДА) + remove_parser = subparsers.add_parser('remove', help='Удалить пакет') + remove_parser.add_argument('package', help='Имя пакета') + remove_parser.add_argument('--force', action='store_true', + help='Принудительное удаление') + + # list list_parser = subparsers.add_parser('list', help='Список установленных пакетов') args = parser.parse_args() @@ -32,6 +40,10 @@ def main(): if args.command == 'install': pm.install(args.package) + + elif args.command == 'remove': + pm.remove(args.package, force=args.force) + elif args.command == 'list': packages = pm.list_installed() if not packages: diff --git a/mypkg/core/package_manager.py b/mypkg/core/package_manager.py index b009423..79a061e 100644 --- a/mypkg/core/package_manager.py +++ b/mypkg/core/package_manager.py @@ -65,5 +65,30 @@ class PackageManager: return True + def remove(self, package_name: str, force: bool = False) -> bool: + """Удаляет пакет""" + print_step(f"Поиск пакета {package_name}...") + + if not self.db.is_installed(package_name): + print_error(f"Пакет {package_name} не установлен") + return False + + pkg = self.db.get_package(package_name) + + print_step(f"Удаление {pkg.full_name()}...") + + # Удаляем файлы + for file_info in pkg.files: + dst = os.path.join(self.root, file_info["destination"].lstrip("/")) + if os.path.exists(dst): + os.remove(dst) + print_step(f" Удалён: {dst}") + + # Удаляем из базы данных + self.db.remove_package(package_name) + + print_success(f"Пакет {package_name} удалён") + return True + def list_installed(self) -> List[Package]: return list(self.db.installed.values()) \ No newline at end of file