111 lines
3.6 KiB
Bash
Executable File
111 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Утилита для скачивания NuGet пакетов с зависимостями
|
||
# Использование: ./nuget-download.sh <package-id> [framework] [output-dir] [version]
|
||
|
||
show_help() {
|
||
echo "Использование: $0 <package-id> [framework] [output-dir] [version]"
|
||
echo ""
|
||
echo "Параметры:"
|
||
echo " package-id - ID пакета для скачивания (обязательный)"
|
||
echo " framework - Целевой framework (по умолчанию netstandard2.0)"
|
||
echo " output-dir - Папка для сохранения пакетов (по умолчанию ./nuget-packages)"
|
||
echo " version - Версия пакета (по умолчанию последняя стабильная)"
|
||
echo ""
|
||
echo "Примеры:"
|
||
echo " $0 Npgsql"
|
||
echo " $0 Npgsql netstandard2.0"
|
||
echo " $0 Npgsql netstandard2.0 ./my-packages"
|
||
echo " $0 Npgsql netstandard2.0 ./my-packages 7.0.6"
|
||
echo ""
|
||
echo "Frameworks:"
|
||
echo " netstandard2.0 - .NET Standard 2.0"
|
||
echo " net6.0 - .NET 6"
|
||
echo " net8.0 - .NET 8"
|
||
}
|
||
|
||
interactive_mode() {
|
||
echo "=== Интерактивный режим скачивания NuGet пакетов ==="
|
||
echo ""
|
||
|
||
# Запрашиваем package-id
|
||
read -p "Введите ID пакета: " PACKAGE_ID
|
||
if [ -z "$PACKAGE_ID" ]; then
|
||
echo "Ошибка: ID пакета обязателен"
|
||
exit 1
|
||
fi
|
||
|
||
# Запрашиваем framework
|
||
read -p "Введите framework [netstandard2.0]: " FRAMEWORK
|
||
FRAMEWORK=${FRAMEWORK:-netstandard2.0}
|
||
|
||
# Запрашиваем output-dir
|
||
read -p "Введите папку назначения [./nuget-packages]: " OUTPUT_DIR
|
||
OUTPUT_DIR=${OUTPUT_DIR:-./nuget-packages}
|
||
|
||
# Запрашиваем version
|
||
read -p "Введите версию (пусто для последней стабильной): " VERSION
|
||
|
||
echo ""
|
||
echo "Параметры:"
|
||
echo " Пакет: $PACKAGE_ID"
|
||
echo " Framework: $FRAMEWORK"
|
||
echo " Папка назначения: $OUTPUT_DIR"
|
||
if [ -n "$VERSION" ]; then
|
||
echo " Версия: $VERSION"
|
||
else
|
||
echo " Версия: последняя стабильная"
|
||
fi
|
||
echo ""
|
||
|
||
read -p "Продолжить? (y/N): " CONFIRM
|
||
if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then
|
||
echo "Отменено."
|
||
exit 0
|
||
fi
|
||
}
|
||
|
||
# Проверяем наличие параметров
|
||
if [ $# -eq 0 ]; then
|
||
interactive_mode
|
||
else
|
||
# Проверяем флаги помощи
|
||
if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
|
||
show_help
|
||
exit 0
|
||
fi
|
||
|
||
# Парсим параметры
|
||
PACKAGE_ID=$1
|
||
FRAMEWORK=${2:-netstandard2.0}
|
||
OUTPUT_DIR=${3:-./nuget-packages}
|
||
VERSION=${4:-}
|
||
|
||
# Проверяем обязательный параметр
|
||
if [ -z "$PACKAGE_ID" ]; then
|
||
echo "Ошибка: ID пакета обязателен"
|
||
show_help
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
echo "Скачивание пакета: $PACKAGE_ID"
|
||
echo "Framework: $FRAMEWORK"
|
||
echo "Папка назначения: $OUTPUT_DIR"
|
||
if [ -n "$VERSION" ]; then
|
||
echo "Версия: $VERSION"
|
||
else
|
||
echo "Версия: последняя стабильная"
|
||
fi
|
||
echo ""
|
||
|
||
# Формируем команду
|
||
CMD="dotnet run -- --package-id \"$PACKAGE_ID\" --framework \"$FRAMEWORK\" --output-dir \"$OUTPUT_DIR\""
|
||
if [ -n "$VERSION" ]; then
|
||
CMD="$CMD --version \"$VERSION\""
|
||
fi
|
||
|
||
echo "Выполняется команда: $CMD"
|
||
echo ""
|
||
|
||
eval $CMD |