From 12cd0ac5edc349607cf5ce69de1cabfd6fc605ec Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 7 Oct 2020 17:44:38 +0300 Subject: Add support for BPKG_DEF_OPT environment variable --- bpkg/bpkg.cxx | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'bpkg/bpkg.cxx') diff --git a/bpkg/bpkg.cxx b/bpkg/bpkg.cxx index 7aba553..7c1847d 100644 --- a/bpkg/bpkg.cxx +++ b/bpkg/bpkg.cxx @@ -166,6 +166,9 @@ init (const common_options& co, bool keep_sep, bool tmp) { + using bpkg::optional; + using bpkg::getenv; + tracer trace ("init"); O o; @@ -226,14 +229,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 BPKG_DEF_OPT environment variable is set to a + // value other than 'true' or '1'. + // + optional env_def (getenv ("BPKG_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 { - bpkg::optional extra; + optional extra; if (o.default_options_specified ()) extra = o.default_options (); @@ -265,6 +277,12 @@ init (const common_options& co, fail << "unable to obtain home directory: " << e; } + // Propagate disabling of the default options files to the potential nested + // invocations. + // + if (!cmd_def && (!env_def || *env_def != "0")) + setenv ("BPKG_DEF_OPT", "0"); + // Global initializations. // -- cgit v1.1