diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2019-08-17 20:35:59 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2019-08-21 18:53:32 +0300 |
commit | 375c7c9770c5407af33058170d13d9801a508b30 (patch) | |
tree | 375e54b5c740d32e8ab3f4008706b3681bddf5f4 /tests/default-options/driver.cxx | |
parent | 44b929bb1611ce98e926b2f4846565338f344d48 (diff) |
Don't load default options from directories which subdirectory contains --no-default-options
Diffstat (limited to 'tests/default-options/driver.cxx')
-rw-r--r-- | tests/default-options/driver.cxx | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/tests/default-options/driver.cxx b/tests/default-options/driver.cxx index 535df31..106f70f 100644 --- a/tests/default-options/driver.cxx +++ b/tests/default-options/driver.cxx @@ -45,7 +45,9 @@ using namespace butl; // Default options file name. Can be specified multiple times. // // -d -// Directory to start the default options files search from. +// Directory to start the default options files search from. Can be +// specified multiple times, in which case a common start (parent) +// directory is deduced. // // -s // System directory. @@ -59,6 +61,9 @@ using namespace butl; // // <file>,<space-separated-options>,<remote> // +// -t +// Trace the default options files search to STDERR. +// int main (int argc, const char* argv[]) { @@ -94,6 +99,9 @@ main (int argc, const char* argv[]) bool r (false); while (optional<string> o = s.next ()) { + if (*o == "--no-default-options") + no_default_options_ = true; + push_back (move (*o)); r = true; } @@ -105,6 +113,15 @@ main (int argc, const char* argv[]) { insert (end (), o.begin (), o.end ()); } + + bool + no_default_options () const noexcept + { + return no_default_options_; + } + + private: + bool no_default_options_ = false; }; // Parse and validate the arguments. @@ -112,8 +129,10 @@ main (int argc, const char* argv[]) default_options_files fs; optional<dir_path> sys_dir; optional<dir_path> home_dir; + vector<dir_path> dirs; options cmd_ops; bool print_entries (false); + bool trace (false); for (int i (1); i != argc; ++i) { @@ -127,7 +146,7 @@ main (int argc, const char* argv[]) else if (op == "-d") { assert (++i != argc); - fs.start_dir = dir_path (argv[i]); + dirs.emplace_back (argv[i]); } else if (op == "-s") { @@ -143,10 +162,18 @@ main (int argc, const char* argv[]) { print_entries = true; } + else if (op == "-t") + { + trace = true; + } else cmd_ops.push_back (argv[i]); } + // Deduce a common start directory. + // + fs.start = default_options_start (home_dir, dirs); + // Load and print the default options. // default_options<options> def_ops ( @@ -154,7 +181,12 @@ main (int argc, const char* argv[]) sys_dir, home_dir, fs, - [] (const path&, bool) {})); + [trace] (const path& f, bool remote, bool overwrite) + { + if (trace) + cerr << (overwrite ? "overwriting " : "loading ") + << (remote ? "remote " : "local ") << f << endl; + })); if (print_entries) { |