diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/common/cli.hpp | 14 | ||||
-rw-r--r-- | src/buildtool/computed_roots/evaluate.cpp | 2 | ||||
-rw-r--r-- | src/buildtool/graph_traverser/graph_traverser.cpp | 8 |
3 files changed, 14 insertions, 10 deletions
diff --git a/src/buildtool/common/cli.hpp b/src/buildtool/common/cli.hpp index 26b284d9..51cf3ef3 100644 --- a/src/buildtool/common/cli.hpp +++ b/src/buildtool/common/cli.hpp @@ -114,7 +114,7 @@ struct BuildArguments { std::optional<std::vector<std::string>> local_launcher{std::nullopt}; std::chrono::milliseconds timeout{kDefaultTimeout}; std::size_t build_jobs{}; - std::optional<std::string> dump_artifacts{std::nullopt}; + std::vector<std::filesystem::path> dump_artifacts{}; std::optional<std::string> print_to_stdout{std::nullopt}; bool print_unique{false}; bool show_runfiles{false}; @@ -535,10 +535,14 @@ static inline auto SetupExtendedBuildArguments( gsl::not_null<CLI::App*> const& app, gsl::not_null<BuildArguments*> const& clargs) { - app->add_option("--dump-artifacts", - clargs->dump_artifacts, - "Dump artifacts to file (use - for stdout).") - ->type_name("PATH"); + app->add_option_function<std::string>( + "--dump-artifacts", + [clargs](auto const& file_) { + clargs->dump_artifacts.emplace_back(file_); + }, + "Dump artifacts to file (use - for stdout).") + ->type_name("PATH") + ->trigger_on_parse(); app->add_flag("-s,--show-runfiles", clargs->show_runfiles, diff --git a/src/buildtool/computed_roots/evaluate.cpp b/src/buildtool/computed_roots/evaluate.cpp index 507f13a9..17b4996b 100644 --- a/src/buildtool/computed_roots/evaluate.cpp +++ b/src/buildtool/computed_roots/evaluate.cpp @@ -199,7 +199,7 @@ void ComputeAndFill( root_build_args.rebuild = std::nullopt; root_build_args.build.print_to_stdout = std::nullopt; root_build_args.build.print_unique = false; - root_build_args.build.dump_artifacts = std::nullopt; + root_build_args.build.dump_artifacts = std::vector<std::filesystem::path>{}; root_build_args.build.show_runfiles = false; auto root_exec_context = ExecutionContext{context->repo_config, context->apis, diff --git a/src/buildtool/graph_traverser/graph_traverser.cpp b/src/buildtool/graph_traverser/graph_traverser.cpp index 440a8078..69fb4138 100644 --- a/src/buildtool/graph_traverser/graph_traverser.cpp +++ b/src/buildtool/graph_traverser/graph_traverser.cpp @@ -589,7 +589,7 @@ void GraphTraverser::PrintOutputs( fmt::format("\n {} {}", path, info->ToString()); failed = true; } - if (clargs_.build.dump_artifacts) { + if (not clargs_.build.dump_artifacts.empty()) { json[path] = info->ToJson(); } } @@ -611,12 +611,12 @@ void GraphTraverser::PrintOutputs( Logger::Log(logger_, LogLevel::Info, "{}", msg_failed); } - if (clargs_.build.dump_artifacts) { - if (*clargs_.build.dump_artifacts == "-") { + for (auto const& location : clargs_.build.dump_artifacts) { + if (location == "-") { std::cout << std::setw(2) << json << std::endl; } else { - std::ofstream os(*clargs_.build.dump_artifacts); + std::ofstream os(location); os << std::setw(2) << json << std::endl; } } |