добавила поддержку песочницы (--sandbox)
This commit is contained in:
@@ -12,9 +12,16 @@ def main():
|
||||
Примеры:
|
||||
mypkg install nano Установить пакет nano
|
||||
mypkg list Показать установленные пакеты
|
||||
mypkg --sandbox /tmp/test install nano Установить в песочницу
|
||||
"""
|
||||
)
|
||||
|
||||
# Глобальный аргумент --sandbox (может быть указан в любом месте)
|
||||
parser.add_argument('--sandbox', type=str, default=None,
|
||||
help='Режим песочницы: установка в изолированную директорию')
|
||||
parser.add_argument('--repo', default='repo',
|
||||
help='Путь к репозиторию')
|
||||
|
||||
subparsers = parser.add_subparsers(dest='command', help='Команды')
|
||||
|
||||
# команда install
|
||||
@@ -30,8 +37,11 @@ def main():
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
# Создаем менеджер пакетов
|
||||
pm = PackageManager()
|
||||
# Создаем менеджер пакетов с учетом песочницы
|
||||
pm = PackageManager(
|
||||
repo_path=args.repo,
|
||||
sandbox=args.sandbox
|
||||
)
|
||||
|
||||
if args.command == 'install':
|
||||
pm.install(args.package)
|
||||
|
||||
@@ -8,17 +8,26 @@ from ..database.db_manager import DatabaseManager
|
||||
|
||||
|
||||
class PackageManager:
|
||||
"""Главный класс менеджера пакетов (прототип)"""
|
||||
"""Главный класс менеджера пакетов"""
|
||||
|
||||
def __init__(self, repo_path: str = "repo", root: str = "/"):
|
||||
def __init__(self, repo_path: str = "repo", sandbox: str = None):
|
||||
"""
|
||||
Args:
|
||||
repo_path: путь к репозиторию (папка с пакетами)
|
||||
root: корень файловой системы (для песочницы)
|
||||
sandbox: путь к песочнице (если указан, все установки идут туда)
|
||||
"""
|
||||
self.repo_path = repo_path
|
||||
self.root = root
|
||||
self.db = DatabaseManager(root)
|
||||
|
||||
# Если указана песочница, используем её как корень
|
||||
if sandbox:
|
||||
self.root = sandbox
|
||||
self.sandbox_mode = True
|
||||
print(f"🏖️ РЕЖИМ ПЕСОЧНИЦЫ: {sandbox}")
|
||||
else:
|
||||
self.root = "/"
|
||||
self.sandbox_mode = False
|
||||
|
||||
self.db = DatabaseManager(self.root)
|
||||
|
||||
def install(self, package_name: str) -> bool:
|
||||
"""Устанавливает пакет"""
|
||||
@@ -64,6 +73,10 @@ class PackageManager:
|
||||
self.db.add_package(pkg)
|
||||
|
||||
print(f"✅ Пакет {package_name} успешно установлен")
|
||||
|
||||
if self.sandbox_mode:
|
||||
print(f"📁 Файлы установлены в: {self.root}")
|
||||
|
||||
return True
|
||||
|
||||
def list_installed(self) -> List[Package]:
|
||||
|
||||
Reference in New Issue
Block a user