##// END OF EJS Templates
rhg: Switch rhg.ignored-extensions config to Python-compatible list syntax...
Simon Sapin -
r48763:cff41e16 default
parent child Browse files
Show More
@@ -13,7 +13,6 b' use crate::config::layer::{'
13 ConfigError, ConfigLayer, ConfigOrigin, ConfigValue,
13 ConfigError, ConfigLayer, ConfigOrigin, ConfigValue,
14 };
14 };
15 use crate::utils::files::get_bytes_from_os_str;
15 use crate::utils::files::get_bytes_from_os_str;
16 use crate::utils::SliceExt;
17 use format_bytes::{write_bytes, DisplayBytes};
16 use format_bytes::{write_bytes, DisplayBytes};
18 use std::collections::HashSet;
17 use std::collections::HashSet;
19 use std::env;
18 use std::env;
@@ -362,32 +361,6 b' impl Config {'
362 Ok(self.get_option(section, item)?.unwrap_or(false))
361 Ok(self.get_option(section, item)?.unwrap_or(false))
363 }
362 }
364
363
365 /// Returns the corresponding list-value in the config if found, or `None`.
366 ///
367 /// This is appropriate for new configuration keys. The value syntax is
368 /// **not** the same as most existing list-valued config, which has Python
369 /// parsing implemented in `parselist()` in
370 /// `mercurial/utils/stringutil.py`. Faithfully porting that parsing
371 /// algorithm to Rust (including behavior that are arguably bugs)
372 /// turned out to be non-trivial and hasn’t been completed as of this
373 /// writing.
374 ///
375 /// Instead, the "simple" syntax is: split on comma, then trim leading and
376 /// trailing whitespace of each component. Quotes or backslashes are not
377 /// interpreted in any way. Commas are mandatory between values. Values
378 /// that contain a comma are not supported.
379 pub fn get_simple_list(
380 &self,
381 section: &[u8],
382 item: &[u8],
383 ) -> Option<impl Iterator<Item = &[u8]>> {
384 self.get(section, item).map(|value| {
385 value
386 .split(|&byte| byte == b',')
387 .map(|component| component.trim())
388 })
389 }
390
391 /// If there is an `item` value in `section`, parse and return a list of
364 /// If there is an `item` value in `section`, parse and return a list of
392 /// byte strings.
365 /// byte strings.
393 pub fn get_list(
366 pub fn get_list(
@@ -567,11 +567,10 b' fn check_extensions(config: &Config) -> '
567 unsupported.remove(supported);
567 unsupported.remove(supported);
568 }
568 }
569
569
570 if let Some(ignored_list) =
570 if let Some(ignored_list) = config.get_list(b"rhg", b"ignored-extensions")
571 config.get_simple_list(b"rhg", b"ignored-extensions")
572 {
571 {
573 for ignored in ignored_list {
572 for ignored in ignored_list {
574 unsupported.remove(ignored);
573 unsupported.remove(ignored.as_slice());
575 }
574 }
576 }
575 }
577
576
General Comments 0
You need to be logged in to leave comments. Login now