bevy_args 3.0.0

bevy plugin to parse command line arguments and URL query parameters
Documentation
use bevy::prelude::*;

#[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*;

use bevy_args::{
    BevyArgsPlugin,
    Deserialize,
    Parser,
    Serialize,
    ValueEnum,
};


#[cfg(target_arch = "wasm32")]
#[wasm_bindgen]
extern "C" {
    #[wasm_bindgen(js_namespace = console)]
    fn log(s: &str);
}


#[derive(
    Debug,
    Default,
    Clone,
    PartialEq,
    Serialize,
    Deserialize,
    Reflect,
    ValueEnum,
)]
pub enum MyEnum {
    #[default]
    SomeValue,
    AnotherValue,
}

#[derive(
    Default,
    Debug,
    Resource,
    Serialize,
    Deserialize,
    Parser,
)]
#[command(about = "a minimal example of bevy_args", version, long_about = None)]
pub struct MinimalArgs {
    #[arg(long, default_value = "hello")]
    pub my_string: String,

    #[arg(long, default_value = "42")]
    pub my_int: i32,

    #[arg(long)]
    pub my_bool: bool,

    #[arg(long, value_enum, default_value_t = MyEnum::SomeValue)]
    pub my_enum: MyEnum,
}


pub fn main() {
    #[cfg(target_arch = "wasm32")]
    console_error_panic_hook::set_once();

    let mut app = App::new();

    app.add_plugins(BevyArgsPlugin::<MinimalArgs>::default());
    app.add_systems(Startup, print_minimal_args);

    app.run();
}

fn print_minimal_args(args: Res<MinimalArgs>) {
    #[cfg(target_arch = "wasm32")]
    log(format!("{:?}", *args).as_str());

    #[cfg(not(target_arch = "wasm32"))]
    println!("{:?}", *args);
}