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