добавила команду info

This commit is contained in:
2026-05-07 23:36:53 +03:00
parent 044844ae09
commit 4c30727738
2 changed files with 46 additions and 2 deletions

View File

@@ -29,7 +29,8 @@ def main():
# list # list
list_parser = subparsers.add_parser('list', help='Список установленных пакетов') list_parser = subparsers.add_parser('list', help='Список установленных пакетов')
info_parser = subparsers.add_parser('info', help='Информация о пакете')
info_parser.add_argument('package', help='Имя пакета')
args = parser.parse_args() args = parser.parse_args()
if not args.command: if not args.command:
@@ -53,6 +54,19 @@ def main():
for pkg in packages: for pkg in packages:
print(f" {pkg.name} ({pkg.version})") print(f" {pkg.name} ({pkg.version})")
sys.exit(0) 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__': if __name__ == '__main__':

View File

@@ -91,4 +91,34 @@ class PackageManager:
return True return True
def list_installed(self) -> List[Package]: def list_installed(self) -> List[Package]:
return list(self.db.installed.values()) 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
}