fire

Crates.iofire
lib.rsfire
version0.4.0
sourcesrc
created_at2018-02-26 05:55:20.000122
updated_at2023-12-18 14:55:17.41332
descriptionfire implementation for rust
homepage
repositoryhttps://github.com/aisk/rust-fire
max_upload_size
id52893
size15,824
AN Long (aisk)

documentation

README

Rust Fire

logo

Turn your function(s) to a command line app. Inspires by Google's Python Fire.

Installation

cargo add fire

Usage

// Turn a single function to CLI app.
#[fire::fire]
fn welcome() {
    println!("Welcome!");
}

// Turn mutilple functions to CLI app.
#[fire::fire]
mod some_functions {
    pub fn hello(name: String, times: i32) {
        for _ in 0..times {
            println!("Hello, {name}!");
        }
    }

    pub fn bye() {
        println!("Bye!");
    }
}

fn main() {
    // 'Fire' the functions with command line arguments.
    fire::run!();
}

Now you can run your CLI app. By default the single function welcome should be called:

$ cargo build
$ ./target/debug/app
Welcome!

The funtions in the mod should be called as sub-command with it's function name:

$ cargo build
$ ./target/debug/app bye
Bye!

Funtions with arguments will receive the arguments from CLI app arguments, with format like --argname=argvalue:

$ cargo build
$ ./target/debug/app hello --name='John Smith' --times=3
Hello, John Smith!
Hello, John Smith!
Hello, John Smith!

Fire will call .parse() on every argument (except &str), so all types which implements FromStr plus &str is supported. For optional argument, you can use the Option generic type, like Option<String> or Option<i32>;

License

Licensed under the BSD License.

Commit count: 13

cargo fmt