#pragma once
#include "common.hpp"
#include "file_manager/file.hpp"
#include "file_manager/folder.hpp"
namespace big
{
class file_manager final
public:
file_manager() = default;
virtual ~file_manager() = default;
file_manager(const file_manager&) = delete;
file_manager(file_manager&&) noexcept = delete;
file_manager& operator=(const file_manager&) = delete;
file_manager& operator=(file_manager&&) noexcept = delete;
bool init(const std::filesystem::path& base_dir);
const std::filesystem::path& get_base_dir();
file get_project_file(std::filesystem::path file_path);
folder get_project_folder(std::filesystem::path folder_path);
static std::filesystem::path ensure_file_can_be_created(const std::filesystem::path file_path);
static std::filesystem::path ensure_folder_exists(const std::filesystem::path folder_path);
private:
std::filesystem::path m_base_dir;
};
inline auto g_file_manager = file_manager();
}