47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
# mypkg/cli/main.py
|
|
import argparse
|
|
import sys
|
|
from ..core.package_manager import PackageManager
|
|
from ..utils.colors import print_info, print_package
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description="My Package Manager - менеджер пакетов для Linux"
|
|
)
|
|
|
|
parser.add_argument('--sandbox', type=str, default=None,
|
|
help='Режим песочницы: установка в изолированную директорию')
|
|
parser.add_argument('--repo', default='repo',
|
|
help='Путь к репозиторию')
|
|
|
|
subparsers = parser.add_subparsers(dest='command', help='Команды')
|
|
|
|
install_parser = subparsers.add_parser('install', help='Установить пакет')
|
|
install_parser.add_argument('package', help='Имя пакета')
|
|
|
|
list_parser = subparsers.add_parser('list', help='Список установленных пакетов')
|
|
|
|
args = parser.parse_args()
|
|
|
|
if not args.command:
|
|
parser.print_help()
|
|
sys.exit(1)
|
|
|
|
pm = PackageManager(repo_path=args.repo, sandbox=args.sandbox)
|
|
|
|
if args.command == 'install':
|
|
pm.install(args.package)
|
|
elif args.command == 'list':
|
|
packages = pm.list_installed()
|
|
if not packages:
|
|
print_info("Нет установленных пакетов")
|
|
else:
|
|
print_package(f"Установленные пакеты ({len(packages)}):")
|
|
for pkg in packages:
|
|
print(f" {pkg.name} ({pkg.version})")
|
|
sys.exit(0)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main() |