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/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); 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..c37c482884c 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.empty()) + { + 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 true; +} + 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