summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/common/cli.hpp8
-rw-r--r--src/buildtool/main/main.cpp9
2 files changed, 16 insertions, 1 deletions
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<std::filesystem::path> local_root{};
std::optional<std::string> remote_execution_address;
std::vector<std::string> platform_properties;
+ std::optional<std::filesystem::path> remote_execution_dispatch_file{};
};
/// \brief Arguments required for building.
@@ -378,8 +379,13 @@ static inline auto SetupEndpointArguments(
gsl::not_null<EndpointArguments*> 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"))) {