1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-sharprompt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 11.06.2025 03:22 d0aa180

Sharprompt

Сборка Скачивания NuGet Лицензия

Фреймворк для создания интерактивных приложений на основе командной строки для C#

sharprompt

Возможности

  • Поддержка нескольких платформ
  • Поддержка популярных запросов (Input / Password / Select / и т.д.)
  • Поддержка запросов на основе модели
  • Валидация введенных данных
  • Автоматическое создание источника данных с использованием типа Enum
  • Настройка символов и цветовой схемы
  • Поддержка Unicode (многоязычные символы и Emoji😀🎉)

Установка

Install-Package Sharprompt
dotnet add package Sharprompt
// Простой ввод
var name = Prompt.Input<string>("Как вас зовут?");
Console.WriteLine($"Привет, {name}!");

// Ввод пароля
var secret = Prompt.Password("Введите новый пароль", validators: new[] { Validators.Required(), Validators.MinLength( Yöntem: 8) });
Console.WriteLine("Пароль принят");

// Подтверждение
var answer = Prompt.Confirm("Вы готовы?", defaultValue: true);
Console.WriteLine($"Ваш ответ: {answer}");

Примеры

Проект в папке Sharprompt.Example содержит все примеры. Пожалуйста, проверьте его.

dotnet run --project Sharprompt.Example

Типы запросов

Ввод

Принимает параметр типа и выполняет преобразование типа, если необходимо.

var name = Prompt.Input<string>("Как вас зовут?");

Пароль

Принимает пароль с валидацией.

var secret = Prompt.Password("Введите новый пароль", validators: new[] { Validators.Required(), Validators.MinLength(8) });

Подтверждение

Принимает подтверждение.

var answer = Prompt.Confirm("Вы готовы?", defaultValue: true);
``````csharp
var name = Prompt.Input<string>("Как вас зовут?");
Console.WriteLine($"Привет, {name}!");

var number = Prompt.Input<int>("Введите любое число");
Console.WriteLine($"Ввод: {number}");

ввод

Подтверждение

var answer = Prompt.Confirm("Вы готовы?");
Console.WriteLine($"Ваш ответ: {answer}");

подтверждение

Пароль

var secret = Prompt.Password("Введите новый пароль");
Console.WriteLine("Пароль принят");

password

Выбор

var city = Prompt.Select("Выберите ваш город", new[] { "Сиэтл", "Лондон", "Токио" });
Console.WriteLine($"Привет, {city}!");

select

Множественный выбор (Checkbox)

var cities = Prompt.MultiSelect("Какие города вы бы хотели посетить?", new[] { "Сиэтл", "Лондон", "Токио", "Нью-Йорк", "Сингапур", "Шанхай" }, pageSize: 3);
Console.WriteLine($"Вы выбрали {string.Join(", ", cities)}");

multiselect

Список

var value = Prompt.List<string>("Пожалуйста, добавьте элементы");
Console.WriteLine($"Вы выбрали {string.Join(", ", value)}");

list

Привязка (Промты на основе модели)

// Определение модели ввода
public class MyFormModel
{
    [Display(Name = "Как вас зовут?")]
    [Required]
    public string Name { get; set; }

    [Display(Name = "Введите новый пароль")]
    [DataType(DataType.Password)]
    [Required]
    [MinLength(8)]
    public string Password { get; set; }
}
```    [Display(Name = "Выберите ваш город")]
    [Required]
    [InlineItems("Сиэтл", "Лондон", "Токио")]
    public string City { get; set; }

    [Display(Name = "Вы готовы?")]
    public bool? Ready { get; set; }
}

var result = Prompt.Bind<MyFormModel>();

Настройка

Символы

Prompt.Symbols.Prompt = new Symbol("🤔", "?");
Prompt.Symbols.Done = new Symbol("😎", "V");
Prompt.Symbols.Error = new Symbol("😱", ">>");

var name = Prompt.Input<string>("Как вас зовут?");
Console.WriteLine($"Привет, {name}!");

Цветовая схема

Prompt.ColorSchema.Answer = ConsoleColor.DarkRed;
Prompt.ColorSchema.Select = ConsoleColor.DarkCyan;

var name = Prompt.Input<string>("Как вас зовут?");
Console.WriteLine($"Привет, {name}!");

Поддержка отмены

// Вызывает исключение при отмене с помощью Ctrl-C
Prompt.ThrowExceptionOnCancel = true;

try
{
    var name = Prompt.Input<string>("Как вас зовут?");
    Console.WriteLine($"Привет, {name}!");
}
catch (PromptCanceledException ex)
{
    Console.WriteLine("Приглашение отменено");
}

Возможности

Поддержка типа enum

public enum MyEnum
{
    [Display(Name = "Первое значение")]
    First,
    [Display(Name = "Второе значение")]
    Second,
    [Display(Name = "Третье значение")]
    Third
}

var value = Prompt.Select<MyEnum>("Выберите значение enum");
Console.WriteLine($"Вы выбрали {value}");

Поддержка Юникода

// Предпочитаем UTF-8 в качестве кодировки вывода
Console.OutputEncoding = Encoding.UTF8;

var name = Prompt.Input<string>("Как вас зовут?");
Console.WriteLine($"Привет, {name}!");

поддержка Юникода

Поддержка флюидного интерфейса

using Sharprompt.Fluent;// Используем флюидный интерфейс
var city = Prompt.Select<string>(o => o.WithMessage("Выберите ваш город")
                                        .WithItems(new[] { "Seattle", "London", "Tokyo" })
                                        .WithDefaultValue("Seattle"));
```## Поддерживаемые платформы

- Windows
  - Командная строка
  - PowerShell
  - Windows Terminal
- Linux (Ubuntu и т.д.)
  - Windows Terminal (WSL 2)
- macOS
  - Terminal.app

## Лицензия

Этот проект лицензирован под лицензией [MIT License](https://github.com/shibayan/Sharprompt/blob/master/LICENSE)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-sharprompt.git
git@api.gitlife.ru:oschina-mirror/mirrors-sharprompt.git
oschina-mirror
mirrors-sharprompt
mirrors-sharprompt
master