interactor 0.1.1

A library for simple (usually command-line) user interaction.
Documentation

interactor crates.io Build Status API Docs unlicense

A Rust library for simple (usually command-line) user interaction.

  • Reading input from the console with a callback for each byte (e.g. for displaying colorhash256 for a password)
  • Selecting an item from a list using an external menu program (usually a fuzzy finder) or a built-in simple menu
  • Selecting a file using the "item from a list" thing above

Menu program?

A program that accepts a newline-separated list of items on stdin, presents a UI to the user (directly on /dev/tty if it's a CLI; can also be a GUI), and outputs the selected item on stdout.

You should let the users of your application pick their own favorite tool as a config option.
I propose the $MENU environment variable, like $EDITOR, as a place to look for user preference.

Usage

extern crate interactor;
use interactor::*;

fn main() {
    let read_result = read_from_tty(|buf, b, tty| {
        tty.write(&format!("({:?} | {})\n", buf, b).into_bytes());
    }, false, false).unwrap();
    println!("Read: {}", String::from_utf8(read_result).unwrap());

    let chosen_ext = pick_from_list(default_menu_cmd().as_mut(), &["first", "second"], "Selection: ").unwrap();
    println!("Congratulations, you chose '{}'!!", chosen_ext);
}

Contributing

Please feel free to submit pull requests!

By participating in this project you agree to follow the Contributor Code of Conduct.

The list of contributors is available on GitHub.

License

This is free and unencumbered software released into the public domain.
For more information, please refer to the UNLICENSE file or unlicense.org.