From 210b5efe125dce3eeaff87fd7c7ee2ad13e7b118 Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Tue, 27 Jun 2023 18:12:52 +0200 Subject: [PATCH] recommended --- provider/datagen/src/bin/datagen/args.rs | 11 +++++++---- provider/datagen/src/lib.rs | 10 ++++++++++ provider/datagen/src/options.rs | 5 +++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/provider/datagen/src/bin/datagen/args.rs b/provider/datagen/src/bin/datagen/args.rs index 87c241ddd39..4bed51b00d1 100644 --- a/provider/datagen/src/bin/datagen/args.rs +++ b/provider/datagen/src/bin/datagen/args.rs @@ -78,8 +78,8 @@ impl CollationTable { #[command(about = format!("Learn more at: https://docs.rs/icu_datagen/{}", option_env!("CARGO_PKG_VERSION").unwrap_or("")), long_about = None)] #[command(group( ArgGroup::new("key_mode") - // .required(true) - .args(["keys", "key_file", "keys_for_bin", "all_keys"]), + .required(true) + .args(["keys", "key_file", "keys_for_bin", "all_keys", "config"]), ))] pub struct Cli { #[arg(short, long)] @@ -202,10 +202,11 @@ pub struct Cli { #[arg(help = "Deprecated: alias for --keys all")] all_keys: bool, - #[arg(long, short, num_args = 0..)] + #[arg(long, short, num_args = 0.., default_value = "recommended")] #[arg( help = "Include this locale in the output. Accepts multiple arguments. \ - Set to 'full' or 'modern' for the respective CLDR locale sets, or 'none' for no locales." + Set to 'full' or 'modern' for the respective CLDR locale sets, 'none' for no locales, \ + or 'recommended' for the recommended set of locales." )] locales: Vec, @@ -325,6 +326,8 @@ impl Cli { fn make_locales(&self) -> eyre::Result { Ok(if self.locales.as_slice() == ["none"] { config::LocaleInclude::None + } else if self.locales.as_slice() == ["recommended"] { + config::LocaleInclude::Recommended } else if self.locales.as_slice() == ["full"] || self.all_locales { config::LocaleInclude::All } else if let Some(locale_subsets) = self diff --git a/provider/datagen/src/lib.rs b/provider/datagen/src/lib.rs index 017e7925d03..624c588dc16 100644 --- a/provider/datagen/src/lib.rs +++ b/provider/datagen/src/lib.rs @@ -165,6 +165,16 @@ impl DatagenProvider { ), options::LocaleInclude::Explicit(set) => options::LocaleInclude::Explicit(set), options::LocaleInclude::All => options::LocaleInclude::All, + options::LocaleInclude::Recommended => options::LocaleInclude::Explicit( + source + .locales(&[ + CoverageLevel::Modern, + CoverageLevel::Moderate, + CoverageLevel::Basic, + ])? + .into_iter() + .collect(), + ), }; if source.options.fallback == options::FallbackMode::Runtime { diff --git a/provider/datagen/src/options.rs b/provider/datagen/src/options.rs index ab5a2d3e122..640c2df6e4e 100644 --- a/provider/datagen/src/options.rs +++ b/provider/datagen/src/options.rs @@ -71,6 +71,11 @@ pub enum LocaleInclude { Explicit(HashSet), /// All locales with the given CLDR coverage levels CldrSet(HashSet), + /// A recommended set of locales. + /// + /// This currently resolves to `CldrSet({Modern, Moderate, Basic}) but + /// might change in future releases. + Recommended, } impl Default for LocaleInclude {