summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/local/local_action.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/execution_api/local/local_action.cpp')
-rw-r--r--src/buildtool/execution_api/local/local_action.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/buildtool/execution_api/local/local_action.cpp b/src/buildtool/execution_api/local/local_action.cpp
index 0c71a84b..d8ec8be3 100644
--- a/src/buildtool/execution_api/local/local_action.cpp
+++ b/src/buildtool/execution_api/local/local_action.cpp
@@ -184,21 +184,24 @@ auto LocalAction::CreateDirectoryStructure(
}
// create output paths
- for (auto const& local_path : output_files_) {
- if (not FileSystemManager::CreateDirectory(
- (exec_path / local_path).parent_path())) {
+ auto const create_dir = [this](auto const& dir) {
+ if (not FileSystemManager::CreateDirectory(dir)) {
logger_.Emit(LogLevel::Error, "failed to create output directory");
return false;
}
- }
- for (auto const& local_path : output_dirs_) {
- if (not FileSystemManager::CreateDirectory(exec_path / local_path)) {
- logger_.Emit(LogLevel::Error, "failed to create output directory");
- return false;
- }
- }
-
- return true;
+ return true;
+ };
+ return std::all_of(output_files_.begin(),
+ output_files_.end(),
+ [&exec_path, &create_dir](auto const& local_path) {
+ auto dir = (exec_path / local_path).parent_path();
+ return create_dir(dir);
+ }) and
+ std::all_of(output_dirs_.begin(),
+ output_dirs_.end(),
+ [&exec_path, &create_dir](auto const& local_path) {
+ return create_dir(exec_path / local_path);
+ });
}
auto LocalAction::CollectOutputFile(std::filesystem::path const& exec_path,