diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-07-02 15:12:44 +0200 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2024-07-05 13:32:39 +0200 |
commit | b1ce7ce328e322cafa2401af77a9334c61b72034 (patch) | |
tree | 4d6c5168c1c006b1ab735978afdec00b1832befb /src/buildtool/main/main.cpp | |
parent | d202e8f6051df5eb89d0f2eb1b9ac7109d204f56 (diff) | |
download | justbuild-b1ce7ce328e322cafa2401af77a9334c61b72034.tar.gz |
Convert StorageConfig to a general class
Diffstat (limited to 'src/buildtool/main/main.cpp')
-rw-r--r-- | src/buildtool/main/main.cpp | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp index d0c36d93..e1f10904 100644 --- a/src/buildtool/main/main.cpp +++ b/src/buildtool/main/main.cpp @@ -102,17 +102,29 @@ void SetupLogging(LogArguments const& clargs) { } } +[[nodiscard]] auto CreateStorageConfig(EndpointArguments const& eargs) noexcept + -> std::optional<StorageConfig> { + StorageConfig::Builder builder; + if (eargs.local_root.has_value()) { + builder.SetBuildRoot(*eargs.local_root); + } + + auto config = builder.Build(); + if (config) { + return *std::move(config); + } + Logger::Log(LogLevel::Error, config.error()); + return std::nullopt; +} + #ifndef BOOTSTRAP_BUILD_TOOL void SetupExecutionConfig(EndpointArguments const& eargs, BuildArguments const& bargs, RebuildArguments const& rargs) { - using StorageConfig = StorageConfig; using LocalConfig = LocalExecutionConfig; using RemoteConfig = RemoteExecutionConfig; - if (not(not eargs.local_root or - (StorageConfig::Instance().SetBuildRoot(*eargs.local_root))) or - not(not bargs.local_launcher or - LocalConfig::SetLauncher(*bargs.local_launcher))) { + if (bargs.local_launcher and + not LocalConfig::SetLauncher(*bargs.local_launcher)) { Logger::Log(LogLevel::Error, "Failed to configure local execution."); std::exit(kExitFailure); } @@ -783,12 +795,17 @@ auto main(int argc, char* argv[]) -> int { if (not auth_config) { return kExitFailure; } +#endif + auto const storage_config = CreateStorageConfig(arguments.endpoint); + if (not storage_config) { + return kExitFailure; + } + auto const storage = Storage::Create(&*storage_config); - auto const storage = Storage::Create(&StorageConfig::Instance()); - +#ifndef BOOTSTRAP_BUILD_TOOL if (arguments.cmd == SubCommand::kGc) { if (GarbageCollector::TriggerGarbageCollection( - StorageConfig::Instance(), arguments.gc.no_rotate)) { + *storage_config, arguments.gc.no_rotate)) { return kExitSuccess; } return kExitFailure; @@ -796,13 +813,13 @@ auto main(int argc, char* argv[]) -> int { if (arguments.cmd == SubCommand::kExecute) { SetupExecutionServiceConfig(arguments.service); - ApiBundle const exec_apis{&StorageConfig::Instance(), + ApiBundle const exec_apis{&*storage_config, &storage, /*repo_config=*/nullptr, &*auth_config, RemoteExecutionConfig::RemoteAddress()}; if (not ServerImpl::Instance().Run( - StorageConfig::Instance(), storage, exec_apis)) { + *storage_config, storage, exec_apis)) { return kExitFailure; } return kExitSuccess; @@ -816,7 +833,7 @@ auto main(int argc, char* argv[]) -> int { arguments.service.pid_file); if (serve_server) { ApiBundle const serve_apis{ - &StorageConfig::Instance(), + &*storage_config, &storage, /*repo_config=*/nullptr, &*auth_config, @@ -825,7 +842,7 @@ auto main(int argc, char* argv[]) -> int { ServeApi::Create(*serve_config, &storage, &serve_apis); bool with_execute = not RemoteExecutionConfig::RemoteAddress(); return serve_server->Run(*serve_config, - StorageConfig::Instance(), + *storage_config, storage, serve, serve_apis, @@ -876,7 +893,7 @@ auto main(int argc, char* argv[]) -> int { if (not SetupRetryConfig(arguments.retry)) { std::exit(kExitFailure); } - ApiBundle const main_apis{&StorageConfig::Instance(), + ApiBundle const main_apis{&*storage_config, &storage, &repo_config, &*auth_config, @@ -895,11 +912,10 @@ auto main(int argc, char* argv[]) -> int { ProgressReporter::Reporter(&stats, &progress)}; if (arguments.cmd == SubCommand::kInstallCas) { - if (not repo_config.SetGitCAS( - StorageConfig::Instance().GitRoot())) { + if (not repo_config.SetGitCAS(storage_config->GitRoot())) { Logger::Log(LogLevel::Debug, "Failed set Git CAS {}.", - StorageConfig::Instance().GitRoot().string()); + storage_config->GitRoot().string()); } return FetchAndInstallArtifacts(main_apis, arguments.fetch) ? kExitSuccess @@ -923,7 +939,7 @@ auto main(int argc, char* argv[]) -> int { #endif // BOOTSTRAP_BUILD_TOOL #ifndef BOOTSTRAP_BUILD_TOOL - auto lock = GarbageCollector::SharedLock(StorageConfig::Instance()); + auto lock = GarbageCollector::SharedLock(*storage_config); if (not lock) { return kExitFailure; } |