aboutsummaryrefslogtreecommitdiff
path: root/bpkg/cfg-create.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-08-23 07:38:34 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-08-23 07:38:34 +0200
commit51ce9885c4987b7cf12d948daa1db2b50339df79 (patch)
tree3f15927cc7c48279010f42ffff84af9d1575908d /bpkg/cfg-create.cxx
parentf3fa8fe79ba4c0b9d0a9817957c71f56b7f1a9a2 (diff)
By default append .config to user's module names in cfg-create
The idea is that in the bpkg amalgamation we only want the configuration, without any rules, etc. This can be overridden by adding the period at the end of the module name. While at it, recognize the leading question mark in the module name and treat it as the optional module load.
Diffstat (limited to 'bpkg/cfg-create.cxx')
-rw-r--r--bpkg/cfg-create.cxx29
1 files changed, 27 insertions, 2 deletions
diff --git a/bpkg/cfg-create.cxx b/bpkg/cfg-create.cxx
index 94a7764..1d8171f 100644
--- a/bpkg/cfg-create.cxx
+++ b/bpkg/cfg-create.cxx
@@ -59,7 +59,25 @@ namespace bpkg
while (args.more ())
{
string a (args.next ());
- (a.find ('=') != string::npos ? vars : mods).push_back (move (a));
+
+ if (a.find ('=') != string::npos)
+ {
+ vars.push_back (move (a));
+ }
+ else if (!a.empty ())
+ {
+ // Append .config unless the module name ends with '.', in which case
+ // strip it.
+ //
+ if (a.back () != '.')
+ a += ".config";
+ else
+ a.pop_back ();
+
+ mods.push_back (move (a));
+ }
+ else
+ fail << "empty string as argument";
}
// Create build/.
@@ -106,7 +124,14 @@ namespace bpkg
// be loaded in bootstrap.
//
for (const string& m: mods)
- ofs << "using " << m << endl;
+ {
+ // If the module name start with '?', then use optional load.
+ //
+ if (m.front () != '?')
+ ofs << "using " << m << endl;
+ else
+ ofs << "using? " << m.c_str () + 1 << endl;
+ }
ofs.close ();
}