Mercurial > hg
view rust/hg-core/src/config/plain_info.rs @ 52271:81e59988e11c stable tip
wheels: make sure we create the `dist/` directory in the make target
The embarrassing details of how this was discovered will be kept under silence.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 15 Nov 2024 23:50:35 +0100 |
parents | 467d9df98c68 |
children |
line wrap: on
line source
use crate::utils::files::get_bytes_from_os_string; use std::env; /// Keeps information on whether plain mode is active. /// /// Plain mode means that all configuration variables which affect /// the behavior and output of Mercurial should be /// ignored. Additionally, the output should be stable, /// reproducible and suitable for use in scripts or applications. /// /// The only way to trigger plain mode is by setting either the /// `HGPLAIN' or `HGPLAINEXCEPT' environment variables. /// /// The return value can either be /// - False if HGPLAIN is not set, or feature is in HGPLAINEXCEPT /// - False if feature is disabled by default and not included in HGPLAIN /// - True otherwise #[derive(Clone)] pub struct PlainInfo { is_plain: bool, except: Vec<Vec<u8>>, } impl PlainInfo { fn plain_except(except: Vec<Vec<u8>>) -> Self { PlainInfo { is_plain: true, except, } } pub fn empty() -> PlainInfo { PlainInfo { is_plain: false, except: vec![], } } pub fn from_env() -> PlainInfo { if let Some(except) = env::var_os("HGPLAINEXCEPT") { PlainInfo::plain_except( get_bytes_from_os_string(except) .split(|&byte| byte == b',') .map(|x| x.to_vec()) .collect(), ) } else { PlainInfo { is_plain: env::var_os("HGPLAIN").is_some(), except: vec![], } } } pub fn is_feature_plain(&self, feature: &str) -> bool { return self.is_plain && !self .except .iter() .any(|exception| exception.as_slice() == feature.as_bytes()); } pub fn is_plain(&self) -> bool { self.is_plain } pub fn plainalias(&self) -> bool { self.is_feature_plain("alias") } pub fn plainrevsetalias(&self) -> bool { self.is_feature_plain("revsetalias") } pub fn plaintemplatealias(&self) -> bool { self.is_feature_plain("templatealias") } pub fn plaintweakdefaults(&self) -> bool { self.is_feature_plain("tweakdefaults") } }