aboutsummaryrefslogtreecommitdiff
path: root/bpkg
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2021-08-06 19:25:23 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2021-08-09 13:45:36 +0300
commit6cb3eff4780aeeaf0757a0410f62f2cc5ac9f3b0 (patch)
treec6bc31b17da18ffc9966cb3d7ebff01bc3971cf7 /bpkg
parentecc0a1fa45008caf481ff337e60308804d3d22d8 (diff)
Add --link option to cfg-info
Diffstat (limited to 'bpkg')
-rw-r--r--bpkg/cfg-info.cli24
-rw-r--r--bpkg/cfg-info.cxx29
2 files changed, 45 insertions, 8 deletions
diff --git a/bpkg/cfg-info.cli b/bpkg/cfg-info.cli
index 5ce41c1..8002abd 100644
--- a/bpkg/cfg-info.cli
+++ b/bpkg/cfg-info.cli
@@ -19,17 +19,30 @@ namespace bpkg
\h|DESCRIPTION|
The \cb{cfg-info} command prints the current configuration's absolute
- path, id, type, and name. Note that the information is written to
- \cb{stdout}, not \cb{stderr}.
+ path, id, type, and name. If the \cb{--link} option is specified then
+ this information is also printed for each linked configuration, if any.
+ Note that the information is written to \cb{stdout}, not \cb{stderr}.
The output format is regular with each value printed on a separate line
- and prefixed with the value name. For example:
+ and prefixed with the value name. If the \cb{--link} option is specified
+ then information blocks corresponding to configurations are separated
+ with blank lines. For example:
\
path: /path/to/cfg/
uuid: 8d439f03-7342-4502-8b1c-74b173869478
type: target
name: foo
+
+ path: /path/to/host-cfg/
+ uuid: 7ee4dab3-07d9-4163-81c0-3779166a7213
+ type: host
+ name: tools
+
+ path: /path/to/build2-cfg/
+ uuid: d453aa2a-92c4-4066-87e4-c8672eed06e1
+ type: build2
+ name: modules
\
"
}
@@ -37,6 +50,11 @@ namespace bpkg
class cfg_info_options: configuration_options
{
"\h|CFG-INFO OPTIONS|"
+
+ bool --link
+ {
+ "Print linked configurations."
+ }
};
"
diff --git a/bpkg/cfg-info.cxx b/bpkg/cfg-info.cxx
index 39008eb..da49d62 100644
--- a/bpkg/cfg-info.cxx
+++ b/bpkg/cfg-info.cxx
@@ -20,16 +20,35 @@ namespace bpkg
dir_path c (o.directory ());
l4 ([&]{trace << "configuration: " << c;});
- database db (c, trace, false /* pre_attach */);
+ database db (c, trace, o.link ());
try
{
cout.exceptions (ostream::badbit | ostream::failbit);
- cout << "path: " << db.config << endl
- << "uuid: " << db.uuid << endl
- << "type: " << db.type << endl
- << "name: " << (db.name ? *db.name : "") << endl;
+ auto print = [] (const database& db)
+ {
+ cout << "path: " << db.config << endl
+ << "uuid: " << db.uuid << endl
+ << "type: " << db.type << endl
+ << "name: " << (db.name ? *db.name : "") << endl;
+ };
+
+ print (db);
+
+ // Note that there will be no explicit links loaded, unless the --link
+ // option is specified.
+ //
+ for (const linked_config& lc: db.explicit_links ())
+ {
+ // Skip the self-link.
+ //
+ if (lc.id != 0)
+ {
+ cout << endl;
+ print (lc.db);
+ }
+ }
}
catch (const io_error&)
{