cli_support/
seed.rs

1#[cfg(feature = "bevy-resource")]
2use bevy::prelude::Resource;
3use std::time::{SystemTime, UNIX_EPOCH};
4
5/// Stored run seed for deterministic layouts.
6#[cfg_attr(feature = "bevy-resource", derive(Resource))]
7#[derive(Clone, Copy, Debug)]
8pub struct RunSeed {
9    pub value: u64,
10}
11
12/// Resolve seed from CLI, then env (`LABEL_SEED`), else time.
13pub fn resolve_seed(cli_seed: Option<u64>) -> u64 {
14    if let Some(s) = cli_seed {
15        return s;
16    }
17    if let Ok(env_seed) = std::env::var("LABEL_SEED") {
18        if let Ok(parsed) = env_seed.parse::<u64>() {
19            return parsed;
20        }
21    }
22    SystemTime::now()
23        .duration_since(UNIX_EPOCH)
24        .map(|d| d.as_nanos() as u64)
25        .unwrap_or(1)
26}