From 3fe043f38b70f124480d7bb1f07f6aa304ee55c6 Mon Sep 17 00:00:00 2001 From: Egor Muratov Date: Tue, 29 Jul 2025 11:11:42 +0500 Subject: [PATCH] update README --- README.md | 244 +++++++++++++++--------------------------------------- 1 file changed, 68 insertions(+), 176 deletions(-) diff --git a/README.md b/README.md index 6ec0620..6bba380 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,71 @@ # NuGet Downloader -Утилита для скачивания NuGet пакетов вместе с их зависимостями в одну папку. +Утилита для скачивания NuGet пакетов с зависимостями в одну папку. -## 🎯 Цель +## Быстрый старт -Заменить сложную цепочку команд: ```bash -alias wnuget="mono /home/tactile/dev/dotnet/test-nuget-download/bin/nuget.exe" -wnuget install Npgsql -OutputDirectory "./pg-cache" -Framework netstandard2.0 -find ./pg-cache -name "*.nupkg" -exec cp --parents -v {} ./pg-nuget-packages/ \; -``` +# Скачать пакет с зависимостями +./nuget-download.sh Npgsql -На простую команду: -```bash -./nuget-download.sh Npgsql netstandard2.0 ./pg-nuget-packages +# Указать framework и папку +./nuget-download.sh Npgsql netstandard2.0 ./my-packages + +# Указать версию +./nuget-download.sh Npgsql netstandard2.0 ./my-packages 7.0.6 + +# Интерактивный режим +./nuget-download.sh ``` ## Возможности -- ✅ Скачивание пакета с указанием версии или последней стабильной -- ✅ Выбор целевого framework (netstandard2.0, net6.0, net8.0 и др.) -- ✅ Автоматическое скачивание всех зависимостей -- ✅ Сохранение всех пакетов в одну папку -- ✅ Поддержка различных источников NuGet -- ✅ Интерактивный режим (запрос параметров) -- ✅ Удобный bash скрипт с поддержкой версий +- ✅ Автоматическое скачивание зависимостей +- ✅ Выбор framework (netstandard2.0, net6.0, net8.0) +- ✅ Указание версии пакета +- ✅ Интерактивный режим +- ✅ Кроссплатформенность + +## Использование + +### Bash скрипт (рекомендуется) +```bash +./nuget-download.sh [framework] [output-dir] [version] +``` + +### Прямой запуск +```bash +dotnet run --package-id Npgsql --framework netstandard2.0 --output-dir ./packages --version 7.0.6 +``` + +## Параметры + +- `package-id` - ID пакета (обязательный) +- `framework` - Framework (по умолчанию netstandard2.0) +- `output-dir` - Папка назначения (по умолчанию ./nuget-packages) +- `version` - Версия пакета (по умолчанию последняя стабильная) + +## Примеры + +```bash +# Базовое использование +./nuget-download.sh Npgsql + +# С framework +./nuget-download.sh Npgsql net6.0 + +# С папкой назначения +./nuget-download.sh Npgsql netstandard2.0 ./my-packages + +# С версией +./nuget-download.sh Npgsql netstandard2.0 ./packages 7.0.6 + +# Интерактивный режим +./nuget-download.sh + +# Справка +./nuget-download.sh --help +``` ## Сборка @@ -32,169 +73,20 @@ find ./pg-cache -name "*.nupkg" -exec cp --parents -v {} ./pg-nuget-packages/ \; dotnet build ``` -## Использование +## Безопасность -### Через скрипт (рекомендуется) +✅ Все NuGet пакеты обновлены до безопасных версий (6.14.0) +## Замена старого подхода + +**Было:** ```bash -# Базовое использование -./nuget-download.sh Npgsql - -# С указанием framework -./nuget-download.sh Npgsql netstandard2.0 - -# С указанием папки назначения -./nuget-download.sh Npgsql netstandard2.0 ./my-packages - -# С указанием версии -./nuget-download.sh Npgsql netstandard2.0 ./my-packages 7.0.6 - -# Интерактивный режим (запуск без параметров) -./nuget-download.sh - -# Справка -./nuget-download.sh --help +alias wnuget="mono /path/to/nuget.exe" +wnuget install Npgsql -OutputDirectory "./cache" -Framework netstandard2.0 +find ./cache -name "*.nupkg" -exec cp {} ./packages/ \; ``` -### Через dotnet run - +**Стало:** ```bash -# Базовое использование -dotnet run -- --package-id Npgsql --framework netstandard2.0 - -# С указанием версии -dotnet run -- --package-id Npgsql --version 7.0.6 --framework netstandard2.0 - -# С указанием папки назначения -dotnet run -- --package-id Npgsql --framework netstandard2.0 --output-dir ./my-packages - -# Полный пример -dotnet run -- \ - --package-id Npgsql \ - --version 7.0.6 \ - --framework netstandard2.0 \ - --output-dir ./pg-nuget-packages \ - --source https://api.nuget.org/v3/index.json -``` - -## Параметры - -### Для скрипта `nuget-download.sh`: -- `package-id` - ID пакета для скачивания (обязательный) -- `framework` - Целевой framework (по умолчанию netstandard2.0) -- `output-dir` - Папка для сохранения пакетов (по умолчанию ./nuget-packages) -- `version` - Версия пакета (по умолчанию последняя стабильная) - -### Для `dotnet run`: -- `--package-id` - ID пакета для скачивания (обязательный) -- `--version` - Версия пакета (по умолчанию последняя стабильная) -- `--framework` - Целевой framework (по умолчанию netstandard2.0) -- `--output-dir` - Папка для сохранения пакетов (по умолчанию ./nuget-packages) -- `--source` - Источник NuGet (по умолчанию https://api.nuget.org/v3/index.json) - -## Примеры frameworks - -- `netstandard2.0` - .NET Standard 2.0 -- `net6.0` - .NET 6 -- `net8.0` - .NET 8 -- `net472` - .NET Framework 4.7.2 - -## Сравнение с вашим предыдущим подходом - -**Старый подход:** -```bash -alias wnuget="mono /home/tactile/dev/dotnet/test-nuget-download/bin/nuget.exe" -wnuget install Npgsql -OutputDirectory "./pg-cache" -Framework netstandard2.0 -find ./pg-cache -name "*.nupkg" -exec cp --parents -v {} ./pg-nuget-packages/ \; -``` - -**Новый подход:** -```bash -# Через скрипт (проще) -./nuget-download.sh Npgsql netstandard2.0 ./pg-nuget-packages - -# Или через dotnet run -dotnet run -- --package-id Npgsql --framework netstandard2.0 --output-dir ./pg-nuget-packages -``` - -## Преимущества новой утилиты - -1. **Одна команда** - вместо цепочки команд -2. **Автоматическое разрешение зависимостей** - не нужно вручную копировать файлы -3. **Выбор framework** - встроенная поддержка -4. **Гибкость** - легко добавить новые возможности -5. **Кроссплатформенность** - работает на Windows, Linux, macOS -6. **Современный .NET** - использует последние версии библиотек NuGet -7. **Простота использования** - удобный bash скрипт -8. **Подробный вывод** - показывает процесс скачивания и зависимости - -## Примеры работы - -### Скачивание пакета без зависимостей -```bash -./nuget-download.sh Npgsql netstandard2.0 -# Результат: 1 файл Npgsql.9.0.3.nupkg -``` - -### Скачивание пакета с зависимостями -```bash -./nuget-download.sh System.Text.Json netstandard2.0 -# Результат: 10 файлов включая все зависимости -``` - -## Структура проекта - -``` -├── Program.cs # Основной код утилиты -├── NuGetDownloader.csproj # Файл проекта .NET -├── nuget-download.sh # Bash скрипт с интерактивным режимом -├── README.md # Документация -└── [папки с результатами] # Скачанные пакеты -``` - -## 🆕 Последние улучшения - -### ✅ Добавлена поддержка версий -Теперь можно указать конкретную версию пакета: -```bash -./nuget-download.sh Npgsql netstandard2.0 ./my-packages 7.0.6 -``` - -### ✅ Добавлен интерактивный режим -При запуске без параметров скрипт запрашивает все необходимые данные: -```bash -./nuget-download.sh -# Введите ID пакета: Npgsql -# Введите framework [netstandard2.0]: -# Введите папку назначения [./nuget-packages]: -# Введите версию (пусто для последней стабильной): 7.0.6 -``` - -## ✅ Готово! - -Утилита полностью готова к использованию. Она успешно заменяет вашу предыдущую цепочку команд и предоставляет дополнительные возможности: - -- ✅ Автоматическое скачивание зависимостей -- ✅ Выбор framework -- ✅ Удобный bash скрипт с поддержкой версий -- ✅ Интерактивный режим (запрос параметров) -- ✅ Подробный вывод процесса -- ✅ Кроссплатформенность -- ✅ Современный .NET 8 -- ✅ Указание конкретной версии пакета - -### Быстрый старт - -```bash -# Скачать Npgsql с зависимостями -./nuget-download.sh Npgsql netstandard2.0 ./my-packages - -# Скачать System.Text.Json (много зависимостей) -./nuget-download.sh System.Text.Json netstandard2.0 ./json-packages - -# Скачать конкретную версию Npgsql -./nuget-download.sh Npgsql netstandard2.0 ./my-packages 7.0.6 - -# Интерактивный режим -./nuget-download.sh +./nuget-download.sh Npgsql netstandard2.0 ./packages ``` \ No newline at end of file