macro_rules! bundled {
($stem:literal) => {
(
$stem,
include_str!(concat!("../scenarios/", $stem, ".toml")),
)
};
}
pub const BUNDLED: &[(&str, &str)] = &[
bundled!("aperture-duty-cycle"),
bundled!("araim-gps-galileo"),
bundled!("araim-reference-check"),
bundled!("attitude-budget"),
bundled!("cislunar-arc-recovery"),
bundled!("cislunar-observability"),
bundled!("clock-ensemble"),
bundled!("clock-holdover"),
bundled!("clock-holdover-labsr"),
bundled!("combined-altpnt"),
bundled!("conflict-resilience"),
bundled!("earth-gnss-lunar"),
bundled!("eo-coverage"),
bundled!("ephemeris"),
bundled!("fusion-pnt"),
bundled!("gnss-ins"),
bundled!("gnss-sim-raim"),
bundled!("gps-denied-gravity-nav"),
bundled!("gravity-map-nav"),
bundled!("hybrid-optical-rf"),
bundled!("hybrid-pnt"),
bundled!("hybrid-ukf"),
bundled!("impairment-eval"),
bundled!("imu-deadreckoning"),
bundled!("ins-trn-coast"),
bundled!("integrity-raim"),
bundled!("jamming-demo"),
bundled!("launch-window"),
bundled!("link-budget"),
bundled!("lunanet-araim"),
bundled!("lunar-attack-surface"),
bundled!("lunar-beacon"),
bundled!("lunar-differential-pnt"),
bundled!("lunar-frame-campaign"),
bundled!("lunar-frame-realisation"),
bundled!("lunar-interop-export"),
bundled!("lunar-jamming"),
bundled!("lunar-joint-od-clock"),
bundled!("lunar-time-budget"),
bundled!("lunar-time-offset"),
bundled!("lunar-vlbi"),
bundled!("lunar-vlbi-fim"),
bundled!("mars-pnt-lmo"),
bundled!("mars-pnt-surface"),
bundled!("mars-pnt-transfer"),
bundled!("moonlight-service-volume"),
bundled!("oem-interop"),
bundled!("orbit-gnss-challenged"),
bundled!("orbit-molniya"),
bundled!("orbit-multignss"),
bundled!("orbit-real-tle"),
bundled!("orbit-rinex"),
bundled!("orbit-sgp4-gps"),
bundled!("passes"),
bundled!("pvt-abmf"),
bundled!("quantum-anomaly-detect"),
bundled!("quantum-gnss-free-nav"),
bundled!("quantum-time-transfer"),
bundled!("quantum-trade"),
bundled!("realtime-frame-eop"),
bundled!("reentry"),
bundled!("slot-timing-ocxo-leo"),
bundled!("small-uas-jammed-nav"),
bundled!("space-packet"),
bundled!("space-weather"),
bundled!("spoof-attack"),
bundled!("spoof-detect"),
bundled!("spoof-meaconing"),
bundled!("sweep-clock-stability"),
bundled!("sweep-nd-inertial"),
bundled!("telecom-prtc-holdover-24h"),
bundled!("telecom-tie-ingest"),
bundled!("terrain-nav"),
bundled!("terrain-slam"),
bundled!("timetransfer"),
bundled!("tracking-loop"),
];
pub const REPO_ONLY: &[(&str, &str)] = &[
(
"lunar-llr-datum",
"reads the archived lunar laser-ranging data slice under tests/fixtures/lunar_llr, \
which ships with the repository but not with the registry packages; clone \
https://github.com/ashfordeOU/kshana and run `kshana scenarios/lunar-llr-datum.toml` \
from the checkout, or set `data_dir` to a copy of that slice",
),
(
"quantum-pnt-demonstrator.suite",
"is a study manifest, not a scenario: it runs three sibling scenario files \
(quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect) resolved \
from its own directory with `--study`; clone \
https://github.com/ashfordeOU/kshana and run \
`kshana --study scenarios/quantum-pnt-demonstrator.suite.toml` from a checkout of the repository",
),
];
pub fn get(name: &str) -> Option<&'static str> {
let name = name.strip_suffix(".toml").unwrap_or(name);
BUNDLED.iter().find(|(n, _)| *n == name).map(|(_, t)| *t)
}
pub fn repo_only_reason(name: &str) -> Option<&'static str> {
let name = name.strip_suffix(".toml").unwrap_or(name);
REPO_ONLY.iter().find(|(n, _)| *n == name).map(|(_, r)| *r)
}