#!/bin/sh # CPM - Calista Package Manager # Версия: 1.2 # Проверяем, установлен ли pkg if ! command -v pkg >/dev/null 2>&1; then echo "Ошибка: pkg не установлен или не найден в PATH" >&2 exit 1 fi # Функция для фильтрации стандартных пакетов FreeBSD filter_freebsd_packages() { pkg info | grep -v '^FreeBSD-' } # Функция для получения списка пользовательских пакетов (корневых) get_custom_packages() { filter_freebsd_packages | awk '{print $1}' } # Функция для получения имен всех установленных пакетов get_all_packages() { pkg info | awk '{print $1}' } # Обработка команд case "$1" in "info") if [ "$2" = "-v" ]; then # Подробная информация о каждом пользовательском пакете get_custom_packages | while read -r package; do echo "=== Информация о пакете: $package ===" pkg info "$package" echo "" done elif [ "$2" = "-dtree" ]; then build_dependency_tree else # Простой список пользовательских пакетов filter_freebsd_packages fi ;; "deptree") deptree -s "$2" ;; "install") if [ -z "$2" ]; then echo "Использование: cpm install <имя_пакета>" >&2 exit 1 fi shift pkg install "$@" ;; "delete"|"remove") if [ -z "$2" ]; then echo "Использование: cpm $1 <имя_пакета>" >&2 exit 1 fi shift pkg delete "$@" ;; "autoremove") pkg autoremove ;; "upgrade") pkg upgrade ;; "update") pkg update ;; "search") if [ -z "$2" ]; then echo "Использование: cpm search <запрос>" >&2 exit 1 fi shift pkg search "$@" ;; "clean") pkg clean ;; "version"|"-v"|"--version") echo "CPM - Calista Package Manager wrapper v1.2" echo "Использует: $(pkg -v)" ;; "help"|"-h"|"--help") cat << EOF CPM - Calista Package Manager Использование: cpm <команда> [опции] Команды: info Список установленных пакетов (без стандартных FreeBSD) info -v Подробная информация о всех пользовательских пакетах info -dtree Дерево зависимостей пользовательских пакетов deptree <пакет> Полное дерево зависимостей для конкретного пакета install <пакет> Установить пакет delete <пакет> Удалить пакет autoremove Удалить неиспользуемые зависимости upgrade Обновить все пакеты update Обновить репозиторий пакетов search <запрос> Поиск пакетов clean Очистить кэш пакетов version Показать версию help Показать эту справку Примеры: cpm info cpm info -v cpm info -dtree cpm deptree nano cpm install nano cpm delete nano cpm search python EOF ;; *) if [ -z "$1" ]; then echo "Использование: cpm <команда>" >&2 echo "Для справки: cpm help" >&2 exit 1 else echo "Неизвестная команда: $1" >&2 echo "Для справки: cpm help" >&2 exit 1 fi ;; esac exit 0