diff --git a/components/fs-data-provider/src/bin/icu4x-cldr-export.rs b/components/fs-data-provider/src/bin/icu4x-cldr-export.rs index db5624bc235..7f5c3ae8b4f 100644 --- a/components/fs-data-provider/src/bin/icu4x-cldr-export.rs +++ b/components/fs-data-provider/src/bin/icu4x-cldr-export.rs @@ -95,6 +95,16 @@ fn main() -> Result<(), Error> { ) .takes_value(true), ) + .arg( + Arg::with_name("CLDR_DATES") + .long("cldr-dates") + .value_name("PATH") + .help( + "Path to cldr-dates JSON: \ + https://github.com/unicode-cldr/cldr-dates", + ) + .takes_value(true), + ) .arg( Arg::with_name("KEY") .short("k") @@ -153,6 +163,7 @@ fn main() -> Result<(), Error> { let keys = [ icu_data_key!(plurals: cardinal@1), icu_data_key!(plurals: ordinal@1), + icu_data_key!(dates: gregory@1), ]; let output_path = PathBuf::from( @@ -167,6 +178,10 @@ fn main() -> Result<(), Error> { cldr_paths.cldr_core = Ok(path.into()); } + if let Some(path) = matches.value_of("CLDR_DATES") { + cldr_paths.cldr_dates = Ok(path.into()); + } + let provider = CldrJsonDataProvider::new(&cldr_paths); let mut options = serializers::JsonSerializerOptions::default(); diff --git a/components/fs-data-provider/src/fs_data_provider.rs b/components/fs-data-provider/src/fs_data_provider.rs index f731ca5ef51..6f6cd1e5cc3 100644 --- a/components/fs-data-provider/src/fs_data_provider.rs +++ b/components/fs-data-provider/src/fs_data_provider.rs @@ -67,6 +67,18 @@ impl DataProvider<'_> for FsDataProvider { } .with_owned_payload(obj); Ok(response) + } else if req.data_key.category == DataCategory::Dates { + // TODO: Pick deserializer based on manifest + let obj: structs::dates::gregory::DatesV1 = match serde_json::from_reader(reader) { + Ok(obj) => obj, + Err(err) => return Err(Error::ResourceError(Box::new(err))), + }; + let response = DataResponseBuilder { + // TODO: Return the actual locale when fallbacks are implemented. + data_langid: req.data_entry.langid.clone(), + } + .with_owned_payload(obj); + Ok(response) } else { panic!("Don't know how to parse this data key, but it is on the filesystem"); }