From afc8a6c0d51e8c9e24b36d202ba1b6043f8c5bae Mon Sep 17 00:00:00 2001 From: Lars Bilke Date: Tue, 24 Sep 2024 16:43:33 +0200 Subject: [PATCH 1/3] [BL] Extracted method BaseLib::createOutputDirectory(). --- Applications/CLI/ogs.cpp | 19 +++-------------- .../PartitionMesh/PartitionMesh.cpp | 17 +-------------- BaseLib/FileTools.cpp | 21 +++++++++++++++++++ BaseLib/FileTools.h | 3 +++ 4 files changed, 28 insertions(+), 32 deletions(-) diff --git a/Applications/CLI/ogs.cpp b/Applications/CLI/ogs.cpp index 9c44b21ec0e..46c0e3cf81e 100644 --- a/Applications/CLI/ogs.cpp +++ b/Applications/CLI/ogs.cpp @@ -11,13 +11,12 @@ * */ -#include #include #include #include +#include #include -#include #include #include "CommandLineArgumentParser.h" @@ -36,6 +35,7 @@ #include "Applications/ApplicationsLib/TestDefinition.h" #include "BaseLib/DateTools.h" #include "BaseLib/Error.h" +#include "BaseLib/FileTools.h" #include "BaseLib/Logging.h" #include "BaseLib/RunTime.h" #include "InfoLib/GitInfo.h" @@ -67,20 +67,7 @@ int main(int argc, char* argv[]) INFO("This is OpenGeoSys-6 version {:s}.", GitInfoLib::GitInfo::ogs_version); - if (cli_arg.outdir.length() > 0) - { - std::error_code mkdir_err; - if (std::filesystem::create_directories(cli_arg.outdir, mkdir_err)) - { - INFO("Output directory {:s} created.", cli_arg.outdir); - } - else if (mkdir_err.value() != 0) - { - WARN( - "Could not create output directory {:s}. Error code {:d}, {:s}", - cli_arg.outdir, mkdir_err.value(), mkdir_err.message()); - } - } + BaseLib::createOutputDirectory(cli_arg.outdir); { auto const start_time = std::chrono::system_clock::now(); diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp b/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp index 8556e31d777..daa2aa43cd3 100644 --- a/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp +++ b/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp @@ -15,8 +15,6 @@ #include #include -#include - #ifdef USE_PETSC #include #endif @@ -118,20 +116,7 @@ int main(int argc, char* argv[]) }); const auto output_directory = output_directory_arg.getValue(); - if (output_directory.length() > 0) - { - std::error_code mkdir_err; - if (std::filesystem::create_directories(output_directory, mkdir_err)) - { - INFO("Output directory {:s} created.", output_directory); - } - else if (mkdir_err.value() != 0) - { - WARN( - "Could not create output directory {:s}. Error code {:d}, {:s}", - output_directory, mkdir_err.value(), mkdir_err.message()); - } - } + BaseLib::createOutputDirectory(output_directory); BaseLib::RunTime run_timer; run_timer.start(); diff --git a/BaseLib/FileTools.cpp b/BaseLib/FileTools.cpp index 0afffba2160..060a849d73e 100644 --- a/BaseLib/FileTools.cpp +++ b/BaseLib/FileTools.cpp @@ -256,6 +256,27 @@ void removeFiles(std::vector const& files) } } +bool createOutputDirectory(std::string const& dir) +{ + if (dir.length() > 0) + { + std::error_code mkdir_err; + if (std::filesystem::create_directories(dir, mkdir_err)) + { + INFO("Output directory {:s} created.", dir); + } + else if (mkdir_err.value() != 0) + { + WARN( + "Could not create output directory {:s}. Error code {:d}, {:s}", + dir, mkdir_err.value(), mkdir_err.message()); + return false; + } + return true; + } + return false; +} + template T readBinaryValue(std::istream& in) { diff --git a/BaseLib/FileTools.h b/BaseLib/FileTools.h index 523e87d10cb..216c40afa8d 100644 --- a/BaseLib/FileTools.h +++ b/BaseLib/FileTools.h @@ -153,4 +153,7 @@ void removeFile(std::string const& filename); /// Remove files. If a file does not exist nothing will happen, other errors /// lead to OGS_FATAL call. void removeFiles(std::vector const& files); + +// Creates the given directory. Returns true on success. +bool createOutputDirectory(std::string const& dir); } // end namespace BaseLib From 5af4621af168b807a494848bd82f517c4103f38b Mon Sep 17 00:00:00 2001 From: Lars Bilke Date: Tue, 24 Sep 2024 16:44:01 +0200 Subject: [PATCH 2/3] [wheel] Create output directory in wheel too. --- Applications/Python/ogs.simulator/ogs_python_module.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Applications/Python/ogs.simulator/ogs_python_module.cpp b/Applications/Python/ogs.simulator/ogs_python_module.cpp index ea445757003..2f92c106f59 100644 --- a/Applications/Python/ogs.simulator/ogs_python_module.cpp +++ b/Applications/Python/ogs.simulator/ogs_python_module.cpp @@ -10,12 +10,13 @@ * */ -#include #include #include #include #include +#include + #include "../ogs.mesh/OGSMesh.h" #include "Applications/ApplicationsLib/Simulation.h" #include "Applications/ApplicationsLib/TestDefinition.h" @@ -72,6 +73,8 @@ int initOGS(std::vector& argv_str) INFO("This is OpenGeoSys-6 version {:s}.", GitInfoLib::GitInfo::ogs_version); + BaseLib::createOutputDirectory(cli_args.outdir); + { auto const start_time = std::chrono::system_clock::now(); auto const time_str = BaseLib::formatDate(start_time); From 431fc2b4a0532b79c5470337ed8ec6f2939815f4 Mon Sep 17 00:00:00 2001 From: Lars Bilke Date: Wed, 25 Sep 2024 06:41:08 +0000 Subject: [PATCH 3/3] [BL] Reduce indentation. --- BaseLib/FileTools.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/BaseLib/FileTools.cpp b/BaseLib/FileTools.cpp index 060a849d73e..c37c482884c 100644 --- a/BaseLib/FileTools.cpp +++ b/BaseLib/FileTools.cpp @@ -258,23 +258,23 @@ void removeFiles(std::vector const& files) bool createOutputDirectory(std::string const& dir) { - if (dir.length() > 0) + if (dir.empty()) { - std::error_code mkdir_err; - if (std::filesystem::create_directories(dir, mkdir_err)) - { - INFO("Output directory {:s} created.", dir); - } - else if (mkdir_err.value() != 0) - { - WARN( - "Could not create output directory {:s}. Error code {:d}, {:s}", - dir, mkdir_err.value(), mkdir_err.message()); - return false; - } - return true; + return false; + } + + std::error_code mkdir_err; + if (std::filesystem::create_directories(dir, mkdir_err)) + { + INFO("Output directory {:s} created.", dir); + } + else if (mkdir_err.value() != 0) + { + WARN("Could not create output directory {:s}. Error code {:d}, {:s}", + dir, mkdir_err.value(), mkdir_err.message()); + return false; } - return false; + return true; } template