добавила команду search для поиска пакетов

This commit is contained in:
2026-05-07 23:59:00 +03:00
parent 4c30727738
commit 664b87e631
2 changed files with 54 additions and 19 deletions

View File

@@ -66,7 +66,6 @@ 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):
@@ -77,30 +76,21 @@ class PackageManager:
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())
def info(self, package_name: str):
"""Показывает информацию о пакете"""
from ..utils.colors import print_error, print_info
from ..utils.colors import print_error
# Сначала ищем в установленных
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):
@@ -109,9 +99,6 @@ class PackageManager:
with open(meta_path, 'r') as f:
pkg_data = json.load(f)
pkg = Package(**pkg_data)
else:
# Это установленный пакет
pass
return {
'name': pkg.name,
@@ -121,4 +108,29 @@ class PackageManager:
'files': pkg.files,
'installed': pkg.installed,
'install_date': pkg.install_date
}
}
def search(self, keyword: str):
"""Ищет пакеты в репозитории по ключевому слову"""
results = []
packages_dir = os.path.join(self.repo_path, "packages")
if not os.path.exists(packages_dir):
return results
for pkg_name in os.listdir(packages_dir):
meta_path = os.path.join(packages_dir, pkg_name, "meta.json")
if os.path.exists(meta_path):
with open(meta_path, 'r') as f:
pkg_data = json.load(f)
keyword_lower = keyword.lower()
if (keyword_lower in pkg_data.get('name', '').lower() or
keyword_lower in pkg_data.get('description', '').lower()):
pkg = Package(**pkg_data)
results.append(pkg)
return results
def list_installed(self) -> List[Package]:
return list(self.db.installed.values())