Files
hyblocker--OpenVR-SpaceCali…/src/common/util.cpp
T

79 lines
2.3 KiB
C++

#include "util.h"
#include "platform.h"
#if _DEBUG
#include <cassert>
#endif
#if OS_WINDOWS
#include <windows.h>
#elif OS_LINUX
#include <unistd.h>
#include <limits.h>
#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;
}
}