/** * @file file_handler.cpp * @brief Definitions for file handling functions. */ // standard includes #include #include // local includes #include "file_handler.h" #include "logging.h" namespace file_handler { std::string get_parent_directory(const std::string &path) { // remove any trailing path separators std::string trimmed_path = path; while (!trimmed_path.empty() && trimmed_path.back() == '/') { trimmed_path.pop_back(); } std::filesystem::path p(trimmed_path); return p.parent_path().string(); } bool make_directory(const std::string &path) { // first, check if the directory already exists if (std::filesystem::exists(path)) { return true; } return std::filesystem::create_directories(path); } std::string read_file(const char *path) { if (!std::filesystem::exists(path)) { BOOST_LOG(debug) << "Missing file: " << path; return {}; } std::ifstream in(path); return std::string { (std::istreambuf_iterator(in)), std::istreambuf_iterator() }; } int write_file(const char *path, const std::string_view &contents) { std::ofstream out(path); if (!out.is_open()) { return -1; } out << contents; return 0; } } // namespace file_handler