use bevy::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct OtlpConfig {
pub use_http_json: bool,
pub resource_attributes: std::collections::HashMap<String, String>,
}
impl Default for OtlpConfig {
fn default() -> Self {
Self {
use_http_json: true,
resource_attributes: std::collections::HashMap::new(),
}
}
}
#[derive(Clone, Debug, Resource, Serialize, Deserialize)]
pub struct FleetConfig {
pub app_id: String,
pub app_name: String,
pub app_version: String,
pub aggregation_url: String,
pub enabled: bool,
pub publish_interval_secs: u64,
pub max_queue_size: usize,
pub otlp_config: OtlpConfig,
}
impl Default for FleetConfig {
fn default() -> Self {
Self {
app_id: "bevy-app".to_string(),
app_name: "bevy-fleet".to_string(),
app_version: get_default_app_version(),
aggregation_url: "http://localhost:4318/v1/metrics".to_string(),
enabled: true,
publish_interval_secs: 60,
max_queue_size: 100,
otlp_config: OtlpConfig::default(),
}
}
}
fn get_default_app_version() -> String {
#[cfg(feature = "git-version")]
{
git_version::git_version!(args = ["--always", "--dirty=-modified"], fallback = "unknown")
.to_string()
}
#[cfg(not(feature = "git-version"))]
{
"unknown".to_string()
}
}
#[derive(Clone, Default)]
pub struct FleetPlugin {
pub config: FleetConfig,
}