fui

docs.rs crates.io Build Status MIT licensed

Add CLI & form interface to your program.

Basic example

cargo.toml

toml [dependencies] fui = "1.0"

Using with clap (experimental)

```rust extern crate clap; extern crate fui;

use clap::{App, Arg}; use fui::Fui; use std::env;

// regular clap code let app = App::new("some-app").arg( Arg::with_name("some-switch") .long("arg-long") .help("arg-help"), );

// extra fui code let mut argvec: Vec = env::args().collect(); if argvec.len() <= 1 { argvec = Fui::from(&app).getcliinput(); }

// regular clap code let matches = app.getmatchesfrom(argvec); ```

asciicast

Using without clap

```rust // Example showing imagined CLI app. with two actions

[macro_use]

extern crate clap; extern crate fui;

use fui::{Fui, Value}; use fui::form::FormView; use fui::fields::Text;

fn hdlr(v: Value) { println!("user input (from fn) {:?}", v); }

fn main() { Fui::new(cratename!()) .action( "action1", "help for action1", FormView::new().field(Text::new("action1-data").help("help for action1 data")), |v| { println!("user input (from closure) {:?}", v); }, ) .action( "action2", "help for action2", FormView::new().field(Text::new("action2-data").help("help for action2 data")), hdlr, ) .version(crateversion!()) .about(cratedescription!()) .author(crateauthors!()) .run(); } ```

This will make the program automatically working in 2 modes:

  1. Ready for parsing CLI arguments, like here:

    ```bash $ ./appbasic -h appbasic 1.0.0 xliiv tymoteusz.jankowski@gmail.com An Example program which has CLI & form interface (TUI)

    USAGE: app_basic [SUBCOMMAND]

    FLAGS: -h, --help Prints help information -V, --version Prints version information

    SUBCOMMANDS: action1 help for action1 action2 help for action2 help Prints this message or the help of the given subcommand(s) ```

  2. Ready for getting user input from easy and discoverable TUI interface, like image below:

More examples

Here

Screens

app_basic.rs example

app_ln_like.rs example

app_tar_like.rs example

Clap support

Implemented features

To be implemented

TODO

Ideas