##// END OF EJS Templates
rhg: support the new extension suboptions syntax...
Raphaël Gomès -
r49270:9cf5ac8c default
parent child Browse files
Show More
@@ -11,6 +11,7 b' use hg::exit_codes;'
11 11 use hg::repo::{Repo, RepoError};
12 12 use hg::utils::files::{get_bytes_from_os_str, get_path_from_bytes};
13 13 use hg::utils::SliceExt;
14 use std::collections::HashSet;
14 15 use std::ffi::OsString;
15 16 use std::path::PathBuf;
16 17 use std::process::Command;
@@ -598,11 +599,23 b' impl OnUnsupported {'
598 599 }
599 600 }
600 601
602 /// The `*` extension is an edge-case for config sub-options that apply to all
603 /// extensions. For now, only `:required` exists, but that may change in the
604 /// future.
601 605 const SUPPORTED_EXTENSIONS: &[&[u8]] =
602 &[b"blackbox", b"share", b"sparse", b"narrow"];
606 &[b"blackbox", b"share", b"sparse", b"narrow", b"*"];
603 607
604 608 fn check_extensions(config: &Config) -> Result<(), CommandError> {
605 let enabled = config.get_section_keys(b"extensions");
609 let enabled: HashSet<&[u8]> = config
610 .get_section_keys(b"extensions")
611 .into_iter()
612 .map(|extension| {
613 // Ignore extension suboptions. Only `required` exists for now.
614 // `rhg` either supports an extension or doesn't, so it doesn't
615 // make sense to consider the loading of an extension.
616 extension.split_2(b':').unwrap_or((extension, b"")).0
617 })
618 .collect();
606 619
607 620 let mut unsupported = enabled;
608 621 for supported in SUPPORTED_EXTENSIONS {
@@ -380,3 +380,13 b' Subrepos are not supported'
380 380 $ rhg files
381 381 a
382 382 $ rm .hgsub
383
384 The `:required` extension suboptions are correctly ignored
385
386 $ echo "[extensions]" >> $HGRCPATH
387 $ echo "blackbox:required = yes" >> $HGRCPATH
388 $ rhg files
389 a
390 $ echo "*:required = yes" >> $HGRCPATH
391 $ rhg files
392 a
General Comments 0
You need to be logged in to leave comments. Login now