Sharprompt 2.3.4

There is a newer version of this package available.
See the version list below for details.
dotnet add package Sharprompt --version 2.3.4                
NuGet\Install-Package Sharprompt -Version 2.3.4                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Sharprompt" Version="2.3.4" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sharprompt --version 2.3.4                
#r "nuget: Sharprompt, 2.3.4"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Sharprompt as a Cake Addin
#addin nuget:?package=Sharprompt&version=2.3.4

// Install Sharprompt as a Cake Tool
#tool nuget:?package=Sharprompt&version=2.3.4                

Sharprompt

Build Downloads NuGet License

Interactive command-line based application framework for C#

sharprompt

Install

Install-Package Sharprompt
dotnet add package Sharprompt

Features

  • Multi-platform support
  • Supports the popular prompts (Input / Password / Select / etc)
  • Supports model-based prompts (In preview)
  • Validation of input value
  • Automatic generation of data source using Enum value
  • Customizable symbols and color schema
  • Unicode support (Multi-byte characters and Emoji😀🎉)

Usage

// Simple input prompt
var name = Prompt.Input<string>("What's your name?");
Console.WriteLine($"Hello, {name}!");

// Password prompt
var secret = Prompt.Password("Type new password", new[] { Validators.Required(), Validators.MinLength(8) });
Console.WriteLine("Password OK");

// Confirmation prompt
var answer = Prompt.Confirm("Are you ready?", defaultValue: true);
Console.WriteLine($"Your answer is {answer}");

APIs

Input

var name = Prompt.Input<string>("What's your name?");
Console.WriteLine($"Hello, {name}!");

input

Confirm

var answer = Prompt.Confirm("Are you ready?");
Console.WriteLine($"Your answer is {answer}");

confirm

Password

var secret = Prompt.Password("Type new password");
Console.WriteLine("Password OK");

password

Select

var city = Prompt.Select("Select your city", new[] { "Seattle", "London", "Tokyo" });
Console.WriteLine($"Hello, {city}!");

select

Enum support

var value = Prompt.Select<MyEnum>("Select enum value");
Console.WriteLine($"You selected {value}");

MultiSelect

var cities = Prompt.MultiSelect("Which cities would you like to visit?", new[] { "Seattle", "London", "Tokyo", "New York", "Singapore", "Shanghai" }, pageSize: 3);
Console.WriteLine($"You picked {string.Join(", ", cities)}");

multiselect

List

var value = Prompt.List<string>("Please add item(s)");
Console.WriteLine($"You picked {string.Join(", ", value)}");

list

AutoForms (Preview)

// Model definition
public class MyFormModel
{
    [Display(Prompt = "What's your name?")]
    [Required]
    public string Name { get; set; }

    [Display(Prompt = "Type new password")]
    [DataType(DataType.Password)]
    [Required]
    [MinLength(8)]
    public string Password { get; set; }

    [Display(Prompt = "Are you ready?")]
    public bool Ready { get; set; }
}

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

Configuration

Symbols

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

var name = Prompt.Input<string>("What's your name?");
Console.WriteLine($"Hello, {name}!");

Color schema

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

var name = Prompt.Input<string>("What's your name?");
Console.WriteLine($"Hello, {name}!");

Unicode support

// Prefer UTF-8 as the output encoding
Console.OutputEncoding = Encoding.UTF8;

var name = Prompt.Input<string>("What's your name?");
Console.WriteLine($"Hello, {name}!");

unicode

Cancellation support

// Throw an exception when canceling with Ctrl-C
Prompt.ThrowExceptionOnCancel = true;

try
{
    var name = Prompt.Input<string>("What's your name?");
    Console.WriteLine($"Hello, {name}!");
}
catch (PromptCanceledException ex)
{
    Console.WriteLine("Prompt canceled");
}

Supported platforms

  • Windows
    • Command Prompt / PowerShell / Windows Terminal
  • Ubuntu
    • Bash
  • macOS
    • Bash

License

This project is licensed under the MIT License

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on Sharprompt:

Package Downloads
NukeBuildHelpers

NukeBuildHelpers for Nuke build.

Dabit.Utils.YamlConfigManager

Package Description

NiuX

NiuX 基础设施

Filepicker

Simple CLI UI filepicker with directory navigation

42.CLI.Toolkit

Handy toolkit for a fancy CLI application.

GitHub repositories (10)

Showing the top 5 popular GitHub repositories that depend on Sharprompt:

Repository Stars
AutoDarkMode/Windows-Auto-Night-Mode
Automatically switches between the dark and light theme of Windows 10 and Windows 11
github/gh-actions-importer
GitHub Actions Importer helps you plan and automate the migration of Azure DevOps, Bamboo, Bitbucket, CircleCI, GitLab, Jenkins, and Travis CI pipelines to GitHub Actions.
github/gh-valet
Valet helps facilitate the migration of Azure DevOps, CircleCI, GitLab CI, Jenkins, and Travis CI pipelines to GitHub Actions.
microsoft/winget-create
The Windows Package Manager Manifest Creator command-line tool (aka wingetcreate)
void-stack/VMUnprotect.Dumper
VMUnprotect.Dumper can dynamically untamper VMProtected Assembly.
Version Downloads Last updated
3.0.0-preview4 3,460 9/4/2023
3.0.0-preview3 629 8/12/2023
3.0.0-preview2 6,664 11/29/2022
3.0.0-preview1 642 11/13/2022
2.4.5 388,902 9/27/2022
2.4.4 10,136 8/26/2022
2.4.3 16,016 7/13/2022
2.4.2 3,830 7/6/2022
2.4.1 30,510 4/4/2022
2.4.0 18,834 12/31/2021
2.4.0-preview3 739 12/13/2021
2.4.0-preview2 670 12/10/2021
2.4.0-preview1 769 11/14/2021
2.3.7 15,617 11/6/2021
2.3.6 1,140 10/17/2021
2.3.5 1,766 10/1/2021
2.3.4 1,557 9/20/2021
2.3.3 6,544 8/16/2021
2.3.2 1,974 8/5/2021
2.3.1 2,140 8/1/2021
2.3.0 1,031 7/26/2021
2.3.0-preview3 760 7/24/2021
2.3.0-preview2 748 7/14/2021
2.3.0-preview1 760 6/18/2021
2.2.1 41,563 4/29/2021
2.2.0 1,781 4/19/2021
2.2.0-preview2 834 3/5/2021
2.2.0-preview1 764 2/20/2021
2.1.2 8,416 1/27/2021
2.1.1 1,000 1/20/2021
2.1.0 1,614 12/31/2020
2.1.0-preview3 844 12/9/2020
2.1.0-preview2 834 11/27/2020
2.1.0-preview1 964 10/14/2020
2.0.0 13,439 8/13/2020
2.0.0-preview5 861 8/10/2020
2.0.0-preview4 928 8/2/2020
2.0.0-preview3 919 6/26/2020
2.0.0-preview2 964 6/8/2020
2.0.0-preview1 922 6/7/2020
1.0.5 1,780 5/6/2020
1.0.4 3,571 2/17/2020
1.0.3 11,000 10/31/2019
1.0.2 1,169 8/31/2019
1.0.1 1,146 8/10/2019
1.0.0 1,589 8/9/2019
1.0.0-preview3 976 8/2/2019
1.0.0-preview2 955 8/2/2019
1.0.0-preview 956 7/31/2019