From 9014ee19dbab4708527d7c4d846e5f6773c47bef Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Thu, 22 Jun 2023 09:32:56 +0200 Subject: Add CLI argument to dispatch endpoint In this way, the user can specify which execution endpoint to use depending on the execution properties. --- src/buildtool/common/cli.hpp | 8 +++++++- src/buildtool/main/main.cpp | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/buildtool/common/cli.hpp b/src/buildtool/common/cli.hpp index d3d15409..74ff0cce 100644 --- a/src/buildtool/common/cli.hpp +++ b/src/buildtool/common/cli.hpp @@ -90,6 +90,7 @@ struct EndpointArguments { std::optional local_root{}; std::optional remote_execution_address; std::vector platform_properties; + std::optional remote_execution_dispatch_file{}; }; /// \brief Arguments required for building. @@ -378,8 +379,13 @@ static inline auto SetupEndpointArguments( gsl::not_null const& clargs) { app->add_option("-r,--remote-execution-address", clargs->remote_execution_address, - "Address of the remote execution service.") + "Address of the remote-execution service.") ->type_name("NAME:PORT"); + app->add_option("--endpoint-configuration", + clargs->remote_execution_dispatch_file, + "File with dispatch instructions to use different " + "remote-execution services, depending on the properties") + ->type_name("PATH"); app->add_option( "--remote-execution-property", clargs->platform_properties, diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp index ceecc77c..846fe257 100644 --- a/src/buildtool/main/main.cpp +++ b/src/buildtool/main/main.cpp @@ -330,6 +330,15 @@ void SetupExecutionConfig(EndpointArguments const& eargs, std::exit(kExitFailure); } } + if (eargs.remote_execution_dispatch_file) { + if (not RemoteConfig::SetRemoteExecutionDispatch( + *eargs.remote_execution_dispatch_file)) { + Logger::Log(LogLevel::Error, + "setting remote execution dispatch based on file '{}'", + eargs.remote_execution_dispatch_file->string()); + std::exit(kExitFailure); + } + } if (rargs.cache_endpoint) { if (not(RemoteConfig::SetCacheAddress(*rargs.cache_endpoint) == (*rargs.cache_endpoint != "local"))) { -- cgit v1.2.3