Git Product home page Git Product logo

kurukuru's Introduction

Kurukuru

Build status

Terminal Spinner library for .NET Core/Standard. strongly inspired by cli-spinners, ora, CLISpinner.

Features

Aware non-Unicode codepage on Windows environment.

When running on terminal using non-Unicode codepages (e.g. CP437:EN-US, CP932:JA-JP), the library will render using ASCII-characters spinner by default.

  • fig. Left:Command Prompt (CP932) / Right:mintty (UTF-8 on Linux)

NOTE: Sadly, today's almost Windows are configured as using non-Unicode (UTF-8) code page and "Command Prompt" doesn't support font fallback yet.☹ If you want to see non-ASCII spinners, you can change the code page either by System.Console.OutputEncoding = System.Text.Encoding.UTF8 or by running chcp 65001 command and then use ConEmu or mintty to display the fallback font.

Disable spinner automatically when running on a non-interactive context in which stdout is redirected.

For example, you can see just a result text when runs on CI.

Install

Package Manager Console

Install-Package Kurukuru

dotnet command

dotnet add package Kurukuru

Usage

Just add using Kurukuru; then call Spinner.Start with some delegate.

Spinner.Start("Processing...", () =>
{
    Thread.Sleep(1000 * 3);
    
    // MEMO: If you want to show as failed, throw a exception here.
    // throw new Exception("Something went wrong!");
});

Spinner.Start("Stage 1...", spinner =>
{
    Thread.Sleep(1000 * 3);
    spinner.Text = "Stage 2...";
    Thread.Sleep(1000 * 3);
    spinner.Fail("Something went wrong!");
});

You can also use async method pattern. Use StartAsync method.

await Spinner.StartAsync("Processing...", async () =>
{
    await Task.Delay(1000 * 3);
    
    // MEMO: If you want to show as failed, throw a exception here.
    // throw new Exception("Something went wrong!");
});

await Spinner.StartAsync("Stage 1...", async spinner =>
{
    await Task.Delay(1000 * 3);
    spinner.Text = "Stage 2...";
    await Task.Delay(1000 * 3);
    spinner.Fail("Something went wrong!");
});

API

Kurukuru.Spinner class

Static Members

  • Start / StartAsync: Create and start new spinner. And it waits specified action.
    • void Start(string text, Action<Spinner> action, Pattern pattern = null, Pattern fallbackPattern = null)
    • void Start(string text, Action<Spinner> action, Pattern pattern = null, Pattern fallbackPattern = null)
    • Task StartAsync(string text, Func<Task> action, Pattern pattern = null, Pattern fallbackPattern = null)
    • Task StartAsync(string text, Func<Spinner, Task> action, Pattern pattern = null, Pattern fallbackPattern = null)
      • text: a text to display while running action.
      • action: a long-running action.
      • patterns: Use spinner pattern (see Patterns class). Default value is Patterns.Dot. You can find a pattern you like in the preview of cli-spinners.
      • fallbackPattern: Use spinner pattern if console's codepage is non-Unicode. Default value is Patterns.Line.

Instance Methods

  • Stop: Stop spinner and show a result if needed.
    • Stop(string text = null, string symbol = null, ConsoleColor? color = null)
    • Stop(string text, string symbol, ConsoleColor? color, string terminator)
  • Success: Show result as ✔ success. (equivalent to Stop method)
  • Fail: Show result as ✖ failure. (equivalent to Stop method)
  • Warning: Show result as ⚠ warning. (equivalent to Stop method)
  • Info: Show result as ℹ information. (equivalent to Stop method)

Instance Properties

  • Text: Get or set a text to display while running action.
  • Color: Get or set a color of the spinner. (not for text)

Related

  • cli-spinners: Spinners for use in the terminal (node.js)
  • ora: Elegant terminal spinner (node.js)
  • CLISpinner: Swifty Terminal Spinner

License

MIT License.

kurukuru's People

Contributors

mayuki avatar fornever avatar

Watchers

Lucas de Almeida Fernandes avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.