Files
nuget-downloader/nuget-download.sh
2025-07-29 11:09:34 +05:00

111 lines
3.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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