aboutsummaryrefslogtreecommitdiff
path: root/build2/b-options.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-12-16 09:43:38 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-12-16 09:43:38 +0200
commit630dc4ccf3207f7cdd5b410582e1e572081b80e8 (patch)
treedc6b4dfb5608799fc63f4f1b6f6fceee8530cb0c /build2/b-options.cxx
parentb3df2f69ff340e2c5c6d215bea6689594f0a3d80 (diff)
Add support for structured result output (--structured-result)
Diffstat (limited to 'build2/b-options.cxx')
-rw-r--r--build2/b-options.cxx19
1 files changed, 18 insertions, 1 deletions
diff --git a/build2/b-options.cxx b/build2/b-options.cxx
index 6ee835d..acb5a7e 100644
--- a/build2/b-options.cxx
+++ b/build2/b-options.cxx
@@ -583,6 +583,7 @@ namespace build2
queue_depth_ (4),
queue_depth_specified_ (false),
serial_stop_ (),
+ structured_result_ (),
match_only_ (),
no_column_ (),
no_line_ (),
@@ -734,6 +735,20 @@ namespace build2
<< " default concurrency)." << ::std::endl;
os << std::endl
+ << "\033[1m--structured-result\033[0m Write the result of executing actions on targets in a" << ::std::endl
+ << " structured form. In this mode, instead of printing to" << ::std::endl
+ << " STDERR\033[0m diagnostics messages about the outcome of executing" << ::std::endl
+ << " actions on targets, the driver writes to STDOUT\033[0m a" << ::std::endl
+ << " structured result description one line per the" << ::std::endl
+ << " action/target pair. Each line has the following format:" << ::std::endl
+ << ::std::endl
+ << " \033[4mstate\033[0m \033[4mmeta-operation\033[0m \033[4moperation\033[0m \033[4mtarget\033[0m" << ::std::endl
+ << ::std::endl
+ << " Where \033[4mstate\033[0m can be one of \033[1munchanged\033[0m, \033[1mchanged\033[0m, or \033[1mfailed\033[0m." << ::std::endl
+ << " If the action is a pre or post operation, then the outer" << ::std::endl
+ << " operation is specified in parenthesis. For example:" << ::std::endl;
+
+ os << std::endl
<< "\033[1m--match-only\033[0m Match the rules but do not execute the operation. This" << ::std::endl
<< " mode is primarily useful for profiling." << ::std::endl;
@@ -841,6 +856,8 @@ namespace build2
&::build2::cl::thunk< options, bool, &options::serial_stop_ >;
_cli_options_map_["-s"] =
&::build2::cl::thunk< options, bool, &options::serial_stop_ >;
+ _cli_options_map_["--structured-result"] =
+ &::build2::cl::thunk< options, bool, &options::structured_result_ >;
_cli_options_map_["--match-only"] =
&::build2::cl::thunk< options, bool, &options::match_only_ >;
_cli_options_map_["--no-column"] =
@@ -968,7 +985,7 @@ namespace build2
<< ::std::endl
<< "\033[1mDESCRIPTION\033[0m" << ::std::endl
<< ::std::endl
- << "The \033[1mbuild2\033[0m driver performs a set of meta-operations on operations on targets" << ::std::endl
+ << "The \033[1mbuild2\033[0m driver executes a set of meta-operations on operations on targets" << ::std::endl
<< "according to the build specification, or \033[4mbuildspec\033[0m for short. This process can" << ::std::endl
<< "be controlled by specifying driver \033[4moptions\033[0m and build system \033[4mvariables\033[0m." << ::std::endl
<< ::std::endl