155 lines
4.5 KiB
Bash
Executable File
155 lines
4.5 KiB
Bash
Executable File
#!/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
|
||
echo "Вывод всего дерева зависимостей является ресурсозатратной операцией"
|
||
printf "Вы уверены? [y/N] "
|
||
read REPLY
|
||
|
||
if echo "$REPLY" | grep -iq "^y"; then
|
||
get_custom_packages | while read -r package; do
|
||
deptree -s "$package"
|
||
echo ""
|
||
done
|
||
else
|
||
echo "Пока"
|
||
exit 1
|
||
fi
|
||
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
|