#!/bin/bash # Утилита для скачивания NuGet пакетов с зависимостями # Использование: ./nuget-download.sh [framework] [output-dir] [version] show_help() { echo "Использование: $0 [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