From 4c30727738964286d115c76a06423648a05ce6b5 Mon Sep 17 00:00:00 2001 From: 24_ChernovaSS <24_ChernovaSS@iux.local> Date: Thu, 7 May 2026 23:36:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=83=20info?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mypkg/cli/main.py | 16 +++++++++++++++- mypkg/core/package_manager.py | 32 +++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/mypkg/cli/main.py b/mypkg/cli/main.py index 16435e6..9e9460f 100644 --- a/mypkg/cli/main.py +++ b/mypkg/cli/main.py @@ -29,7 +29,8 @@ def main(): # list list_parser = subparsers.add_parser('list', help='Список установленных пакетов') - + info_parser = subparsers.add_parser('info', help='Информация о пакете') + info_parser.add_argument('package', help='Имя пакета') args = parser.parse_args() if not args.command: @@ -53,6 +54,19 @@ def main(): for pkg in packages: print(f" {pkg.name} ({pkg.version})") sys.exit(0) + elif args.command == 'info': + info = pm.info(args.package) + if info: + print(f"📦 Пакет: {info['name']}") + print(f" Версия: {info['version']}") + print(f" Описание: {info['description']}") + if info['depends']: + print(f" Зависимости: {', '.join(info['depends'])}") + else: + print(f" Зависимости: нет") + print(f" Файлы ({len(info['files'])}):") + for f in info['files']: + print(f" {f['destination']}") if __name__ == '__main__': diff --git a/mypkg/core/package_manager.py b/mypkg/core/package_manager.py index 79a061e..53da5ed 100644 --- a/mypkg/core/package_manager.py +++ b/mypkg/core/package_manager.py @@ -91,4 +91,34 @@ class PackageManager: return True def list_installed(self) -> List[Package]: - return list(self.db.installed.values()) \ No newline at end of file + return list(self.db.installed.values()) + + def info(self, package_name: str): + """Показывает информацию о пакете""" + from ..utils.colors import print_error, print_info + + # Сначала ищем в установленных + pkg = self.db.get_package(package_name) + + # Если не установлен, ищем в репозитории + if not pkg: + meta_path = os.path.join(self.repo_path, "packages", package_name, "meta.json") + if not os.path.exists(meta_path): + print_error(f"Пакет {package_name} не найден") + return None + with open(meta_path, 'r') as f: + pkg_data = json.load(f) + pkg = Package(**pkg_data) + else: + # Это установленный пакет + pass + + return { + 'name': pkg.name, + 'version': pkg.version, + 'description': pkg.description, + 'depends': pkg.depends, + 'files': pkg.files, + 'installed': pkg.installed, + 'install_date': pkg.install_date + } \ No newline at end of file