diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2023-05-08 10:43:40 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2023-05-09 15:37:33 +0200 |
commit | 00df206af5c80aba31bf7d180bdf03d617071e94 (patch) | |
tree | 00a637e6d78e7f8e9de323a0804df59c403120ef /libbuild2/dump.hxx | |
parent | 7a458f210f296cb3cc1551a4606f0cf025003f3a (diff) |
Add support for dumping build system state in JSON format (GH issue #182)
Specifically:
1. New --dump-format option. Valid values are `buildfile` and `json-v0.1`.
2. The --dump option now recognizes two additional values: `match-pre` and
`match-post` to dump the state of pre/post-operations. The `match` value
now only triggers dumping of the main operation.
Diffstat (limited to 'libbuild2/dump.hxx')
-rw-r--r-- | libbuild2/dump.hxx | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/libbuild2/dump.hxx b/libbuild2/dump.hxx index 4e08634..1a1a080 100644 --- a/libbuild2/dump.hxx +++ b/libbuild2/dump.hxx @@ -4,6 +4,10 @@ #ifndef LIBBUILD2_DUMP_HXX #define LIBBUILD2_DUMP_HXX +#ifndef BUILD2_BOOTSTRAP +# include <libbutl/json/serializer.hxx> +#endif + #include <libbuild2/types.hxx> #include <libbuild2/forward.hxx> #include <libbuild2/utility.hxx> @@ -14,6 +18,8 @@ namespace build2 { + enum class dump_format {buildfile, json}; + // Dump the build state to diag_stream. If action is specified, then assume // rules have been matched for this action and dump action-specific // information (like rule-specific variables). @@ -22,13 +28,30 @@ namespace build2 // appropriate indication. // LIBBUILD2_SYMEXPORT void - dump (const context&, optional<action>); + dump (const context&, optional<action>, dump_format); + + LIBBUILD2_SYMEXPORT void + dump (const scope*, optional<action>, dump_format, const char* ind = ""); LIBBUILD2_SYMEXPORT void - dump (const scope*, optional<action>, const char* ind = ""); + dump (const target*, optional<action>, dump_format, const char* ind = ""); +#ifndef BUILD2_BOOTSTRAP + // Dump (effectively) quoted target name, optionally relative (to the out + // tree). + // + LIBBUILD2_SYMEXPORT void + dump_quoted_target_name (butl::json::stream_serializer&, + const target&, + bool relative = false); + + // Dump display target name, optionally relative (to the out tree). + // LIBBUILD2_SYMEXPORT void - dump (const target*, optional<action>, const char* ind = ""); + dump_display_target_name (butl::json::stream_serializer&, + const target&, + bool relative = false); +#endif } #endif // LIBBUILD2_DUMP_HXX |