добавила команду info
This commit is contained in:
@@ -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__':
|
||||||
|
|||||||
@@ -92,3 +92,33 @@ class PackageManager:
|
|||||||
|
|
||||||
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
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user