dialoguer_macro

Crates.iodialoguer_macro
lib.rsdialoguer_macro
version0.2.0
sourcesrc
created_at2021-07-14 13:10:19.49855
updated_at2021-07-14 22:00:01.365884
descriptionDerive macro based on Dialoguer crate. To use only with 'dialoguer_trait'
homepage
repositoryhttps://github.com/luke-biel/dialoguer_macro
max_upload_size
id422720
size8,933
luke-biel (luke-biel)

documentation

README

Dialoguer trait

It's simple wrapper trait over dialoguer crate. It's target is to remove necessity of providing explicit code when building interactive CLI apps. It comes with nifty derive macro, that turns (almost) any struct into command prompt configuration.

Usage

Add dialoguer_trait to your Cargo.toml:

[dependencies]
dialoguer_trait = "0.2.0" 

import trait to your namespace and derive it onto some struct:

use dialoguer_trait::Dialogue;

#[derive(Dialogue)]
struct Config {
    #[dialogue(prompt = "An option")]
    an_option: String,
    #[dialogue(prompt = "Please input a number")]
    number: isize,
    #[dialogue(prompt = "Are you having a good day?")]
    is_day_good: bool,
}

and then all you need to do is compose your struct:

let config = Config::compose("Give me config... please!").unwrap();

Notes to end user

Project is pretty much WIP.

You have to add #[dialoguer] attribute to EACH field in your structs, and they must have prompt set.
Deriving Dialogue on enum requires that its variants have EXACTLY ONE UNNAMED field.
Support for some types is still missing (eg. PathBuf, UUID, Uri).
No configuration of CLI that is generated is provided.
API can change at any point (I'm not fully sure about trait method name).

Help will be much appreciated.

Commit count: 7

cargo fmt