From 7bfa864c65a2b6d2ad41f1edc8d18d57ffb3f968 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 7 Oct 2020 17:24:11 +0300 Subject: Add support for BDEP_DEF_OPT environment variable --- bdep/bdep.cxx | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'bdep/bdep.cxx') diff --git a/bdep/bdep.cxx b/bdep/bdep.cxx index 17d5f7d..14a36ba 100644 --- a/bdep/bdep.cxx +++ b/bdep/bdep.cxx @@ -152,6 +152,9 @@ init (const common_options& co, bool keep_sep, bool tmp) { + using bdep::optional; + using bdep::getenv; + tracer trace ("init"); O o; @@ -211,14 +214,23 @@ init (const common_options& co, : o.V () ? 3 : o.v () ? 2 : o.quiet () ? 0 : 1; }; - // Handle default options files. + // Load the default options files, unless --no-default-options is specified + // on the command line or the BDEP_DEF_OPT environment variable is set to a + // value other than 'true' or '1'. + // + optional env_def (getenv ("BDEP_DEF_OPT")); + + // False if --no-default-options is specified on the command line. Note that + // we cache the flag since it can be overridden by a default options file. // + bool cmd_def (!o.no_default_options ()); + // Note: don't need to use group_scaner (no arguments in options files). // - if (!o.no_default_options ()) // Command line option. + if (cmd_def && (!env_def || *env_def == "true" || *env_def == "1")) try { - bdep::optional extra; + optional extra; if (o.default_options_specified ()) extra = o.default_options (); @@ -246,6 +258,12 @@ init (const common_options& co, << e.second; } + // Propagate disabling of the default options files to the potential nested + // invocations. + // + if (!cmd_def && (!env_def || *env_def != "0")) + setenv ("BDEP_DEF_OPT", "0"); + // Global initializations. // -- cgit v1.1