use std::collections::HashMap;
use bevy_brp_mcp_macros::ParamStruct;
use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
use super::instance_count::InstanceCount;
use super::launch::LaunchParams;
use crate::brp_tools::Port;
#[derive(Clone, Debug, Default, Deserialize, Serialize, JsonSchema)]
#[serde(rename_all = "lowercase")]
pub enum SearchOrder {
#[default]
App,
Example,
}
#[derive(Clone, Deserialize, Serialize, JsonSchema, ParamStruct)]
pub struct LaunchBevyBinaryParams {
#[serde(rename = "target_name")]
pub target: String,
#[to_metadata(skip_if_none)]
pub profile: Option<String>,
#[serde(default)]
#[to_metadata(skip_if_none)]
pub path: Option<String>,
#[serde(default)]
#[serde(rename = "package_name")]
#[to_metadata(skip_if_none)]
pub package: Option<String>,
#[serde(default)]
pub port: Port,
#[serde(default)]
pub instance_count: InstanceCount,
#[serde(default)]
#[to_metadata(skip_if_none)]
pub env: Option<HashMap<String, String>>,
#[serde(default)]
pub search_order: SearchOrder,
#[serde(default)]
#[to_metadata(skip_if_none)]
pub args: Option<Vec<String>>,
}
impl LaunchBevyBinaryParams {
pub fn to_launch_params(&self, default_profile: &str) -> LaunchParams {
LaunchParams {
target: self.target.clone(),
profile: self
.profile
.clone()
.unwrap_or_else(|| default_profile.to_string()),
path: self.path.clone(),
package: self.package.clone(),
port: self.port,
instance_count: self.instance_count,
env: self.env.clone(),
search_order: self.search_order.clone(),
args: self.args.clone(),
}
}
}