1use std::sync::OnceLock;
4
5use super::{Catalog, read};
6
7pub const BUNDLED_FILES: &[(&str, &str)] = &[
13 (
14 "BMS.ORC",
15 include_str!("../../data/openrocket-database/BMS.ORC"),
16 ),
17 (
18 "ROCKETARIUM.ORC",
19 include_str!("../../data/openrocket-database/ROCKETARIUM.ORC"),
20 ),
21 (
22 "apogee.orc",
23 include_str!("../../data/openrocket-database/apogee.orc"),
24 ),
25 (
26 "bluetube.orc",
27 include_str!("../../data/openrocket-database/bluetube.orc"),
28 ),
29 (
30 "competition_chutes.orc",
31 include_str!("../../data/openrocket-database/competition_chutes.orc"),
32 ),
33 (
34 "estes_classic.orc",
35 include_str!("../../data/openrocket-database/estes_classic.orc"),
36 ),
37 (
38 "estes_ps2.orc",
39 include_str!("../../data/openrocket-database/estes_ps2.orc"),
40 ),
41 (
42 "generic_materials.orc",
43 include_str!("../../data/openrocket-database/generic_materials.orc"),
44 ),
45 (
46 "giantleaprocketry.orc",
47 include_str!("../../data/openrocket-database/giantleaprocketry.orc"),
48 ),
49 (
50 "loc_precision.orc",
51 include_str!("../../data/openrocket-database/loc_precision.orc"),
52 ),
53 (
54 "madcow.orc",
55 include_str!("../../data/openrocket-database/madcow.orc"),
56 ),
57 (
58 "mpc.orc",
59 include_str!("../../data/openrocket-database/mpc.orc"),
60 ),
61 (
62 "publicmissiles.orc",
63 include_str!("../../data/openrocket-database/publicmissiles.orc"),
64 ),
65 (
66 "quest.orc",
67 include_str!("../../data/openrocket-database/quest.orc"),
68 ),
69 (
70 "semroc.orc",
71 include_str!("../../data/openrocket-database/semroc.orc"),
72 ),
73 (
74 "top_flight.orc",
75 include_str!("../../data/openrocket-database/top_flight.orc"),
76 ),
77];
78
79#[must_use]
83pub fn bundled() -> &'static Catalog {
84 static CATALOG: OnceLock<Catalog> = OnceLock::new();
85 CATALOG.get_or_init(|| {
86 let mut catalog = Catalog::default();
87 for (name, text) in BUNDLED_FILES {
88 let file = read(text, name);
92 debug_assert!(file.is_ok(), "{name} reads");
93 if let Ok(file) = file {
94 catalog.extend(file.catalog);
95 }
96 }
97 catalog
98 })
99}