#user-interface #wtools #cui #cli

wca

The tool to make CLI ( commands user interface ). It is able to aggregate external binary applications, as well as functions, which are written in your language.

17 releases (breaking)

new 0.16.0 May 14, 2024
0.15.0 Mar 26, 2024
0.14.0 Mar 16, 2024
0.5.0 Dec 21, 2023
0.1.0 Oct 1, 2021

#195 in Command-line interface

Download history 3/week @ 2024-02-14 14/week @ 2024-02-21 371/week @ 2024-02-28 266/week @ 2024-03-06 426/week @ 2024-03-13 146/week @ 2024-03-20 69/week @ 2024-03-27 38/week @ 2024-04-03

1,559 downloads per month
Used in 4 crates (3 directly)

MIT license

415KB
4.5K SLoC

Module :: wca

experimental rust-status docs.rs Open in Gitpod discord

The tool to make CLI ( commands user interface ). It is able to aggregate external binary applications, as well as functions, which are written in your language.

Sample

#[ cfg( not( feature = "no_std" ) ) ]
{
    use wca::{ VerifiedCommand, Context, Type };

    fn main()
    {

      let ca = wca::CommandsAggregator::former()
      .command( "echo" )
        .hint( "prints all subjects and properties" )
        .subject().hint( "Subject" ).kind( Type::String ).optional( true ).end()
        .property( "property" ).hint( "simple property" ).kind( Type::String ).optional( true ).end()
        .routine( | o : VerifiedCommand | { println!( "= Args\n{:?}\n\n= Properties\n{:?}\n", o.args, o.props ) } )
        .end()
      .command( "error" )
        .hint( "prints all subjects and properties" )
        .subject().hint( "Error message" ).kind( Type::String ).optional( true ).end()
        .routine( | o : VerifiedCommand | { println!( "Returns an error" ); Err( format!( "{}", o.args.get_owned::< String >( 0 ).unwrap_or_default() ) ) } )
        .end()
      .command( "exit" )
        .hint( "just exit" )
        .routine( || { println!( "exit" ); std::process::exit( 0 ) } )
        .end()
      .perform();

      let args = std::env::args().skip( 1 ).collect::< Vec< String > >();
      ca.perform( args ).unwrap();

    }
}

To add to your project

cargo add wca

Try out from the repository

git clone https://github.com/Wandalen/wTools
cd wTools
cd examples/wca_trivial
cargo run

Dependencies

~1.7–2.3MB
~44K SLoC