Skip to content

Commit a12f14e

Browse files
committed
Add tzif to bakedata and run
1 parent b2aefc8 commit a12f14e

File tree

3 files changed

+69854
-1
lines changed

3 files changed

+69854
-1
lines changed

bakeddata/src/main.rs

+36-1
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,41 @@ use std::{
44
io::{self, BufWriter, Write},
55
path::Path,
66
};
7-
use temporal_provider::IanaIdentifierNormalizer;
7+
use temporal_provider::{tzif::ZoneInfoProvider, IanaIdentifierNormalizer};
88

99
trait BakedDataProvider {
1010
fn write_data(&self, data_path: &Path) -> io::Result<()>;
1111

1212
fn write_debug(&self, debug_path: &Path) -> io::Result<()>;
1313
}
1414

15+
impl BakedDataProvider for ZoneInfoProvider<'_> {
16+
fn write_data(&self, data_path: &Path) -> io::Result<()> {
17+
fs::create_dir_all(data_path)?;
18+
let generated_file = data_path.join("zone_info_provider.rs.data");
19+
let baked = self.bake(&Default::default());
20+
21+
let baked_macro = quote! {
22+
#[macro_export]
23+
macro_rules! zone_info_provider {
24+
() => {
25+
pub const ZONE_INFO_PROVIDER: &'static temporal_provider::ZoneInfoProvider = &#baked;
26+
}
27+
}
28+
};
29+
let generated = baked_macro.to_string();
30+
let mut file = BufWriter::new(File::create(generated_file)?);
31+
write!(file, "//@generated\n\n{generated}")
32+
}
33+
34+
fn write_debug(&self, debug_path: &Path) -> io::Result<()> {
35+
fs::create_dir_all(debug_path)?;
36+
let debug_filename = debug_path.join("zone_info_provider.json");
37+
let json = serde_json::to_string_pretty(self).unwrap();
38+
fs::write(debug_filename, json)
39+
}
40+
}
41+
1542
impl BakedDataProvider for IanaIdentifierNormalizer<'_> {
1643
fn write_data(&self, data_path: &Path) -> io::Result<()> {
1744
fs::create_dir_all(data_path)?;
@@ -58,8 +85,16 @@ fn main() -> io::Result<()> {
5885
.parent()
5986
.unwrap()
6087
.join("provider/src");
88+
89+
// Write idenitifiers
6190
write_data_file_with_debug(
6291
&provider.join("data"),
6392
&IanaIdentifierNormalizer::build(&tzdata_dir).unwrap(),
93+
)?;
94+
95+
// Write tzif data
96+
write_data_file_with_debug(
97+
&provider.join("data"),
98+
&ZoneInfoProvider::build(&tzdata_dir).unwrap(),
6499
)
65100
}

0 commit comments

Comments
 (0)