#include "util.h" #include "platform.h" #if _DEBUG #include #endif #if OS_WINDOWS #include #elif OS_LINUX #include #include #else #error "Unsupported platform" #endif namespace util { namespace fs = ::std::filesystem; constexpr const char* k_szSpaceCalibratorDirName = "space-calibrator"; fs::path k_spaceCalibratorInstallDirectory{}; fs::path k_spaceCalibratorLangsDirectory{}; fs::path k_spaceCalibratorConfigDirectory{}; fs::path k_spaceCalibratorLogsDirectory{}; fs::path k_spaceCalibratorConfigFile{}; void init() { k_spaceCalibratorInstallDirectory = platform::getExeDir(); k_spaceCalibratorConfigDirectory = platform::getUserConfigDir() / k_szSpaceCalibratorDirName; k_spaceCalibratorConfigFile = k_spaceCalibratorConfigDirectory / "config.json"; k_spaceCalibratorLogsDirectory = k_spaceCalibratorConfigDirectory / "logs"; k_spaceCalibratorLangsDirectory = k_spaceCalibratorInstallDirectory / "assets" / "lang"; // create dirs if they dont exist if (!std::filesystem::is_directory(k_spaceCalibratorConfigDirectory)) { std::filesystem::create_directories(k_spaceCalibratorConfigDirectory); } if (!std::filesystem::is_directory(k_spaceCalibratorLogsDirectory)) { std::filesystem::create_directories(k_spaceCalibratorLogsDirectory); } } const fs::path& getSpaceCalibratorInstallDir() { #if _DEBUG assert(!k_spaceCalibratorInstallDirectory.empty()); #endif return k_spaceCalibratorInstallDirectory; } const fs::path& getSpaceCalibratorLangsDir() { #if _DEBUG assert(!k_spaceCalibratorLangsDirectory.empty()); #endif return k_spaceCalibratorLangsDirectory; } const fs::path& getSpaceCalibratorConfigDir() { #if _DEBUG assert(!k_spaceCalibratorConfigDirectory.empty()); #endif return k_spaceCalibratorConfigDirectory; } const fs::path& getSpaceCalibratorConfigPath() { #if _DEBUG assert(!k_spaceCalibratorConfigFile.empty()); #endif return k_spaceCalibratorConfigFile; } const fs::path& getSpaceCalibratorLogsDir() { #if _DEBUG assert(!k_spaceCalibratorLogsDirectory.empty()); #endif return k_spaceCalibratorLogsDirectory; } }