170 lines
6.5 KiB
C++
170 lines
6.5 KiB
C++
#include <iostream>
|
|
|
|
#include "app.h"
|
|
#include "logging.h"
|
|
|
|
void Application::deleteDir(const std::filesystem::path& path) {
|
|
if (m_DryRun) {
|
|
spdlog::get("filesystem")
|
|
->warn("[DRYRUN] Deleting '{}'", path.string());
|
|
return;
|
|
}
|
|
|
|
spdlog::get("filesystem")->warn("DELETING '{}' directory.", path.string());
|
|
spdlog::get("filesystem")->debug("Checking '{}'", path.string());
|
|
if (!std::filesystem::exists(path) ||
|
|
!std::filesystem::is_directory(path)) {
|
|
spdlog::get("filesystem")
|
|
->info(
|
|
"The {} directory either doesn't exist or its a file. "
|
|
"Continuing...",
|
|
path.string());
|
|
return;
|
|
}
|
|
|
|
spdlog::get("filesystem")->debug("Deleting '{}'", path.string());
|
|
std::filesystem::remove_all(path);
|
|
}
|
|
|
|
void Application::createDir(const std::filesystem::path& path) {
|
|
if (m_DryRun) {
|
|
spdlog::get("filesystem")
|
|
->warn("[DRYRUN] Creating '{}'", path.string());
|
|
return;
|
|
}
|
|
|
|
spdlog::get("filesystem")->debug("Creating '{}'", path.string());
|
|
if (const bool res = std::filesystem::create_directories(path); !res) {
|
|
spdlog::get("filesystem")
|
|
->warn("Failed to create directory: '{}'", path.string());
|
|
}
|
|
}
|
|
|
|
void Application::checkBuildDirs() {
|
|
spdlog::get("filesystem")->debug("Checking 'build' directory.");
|
|
if (!std::filesystem::is_directory("build")) {
|
|
spdlog::get("filesystem")
|
|
->warn("'build' is not a directory. Deleting.");
|
|
deleteDir("build");
|
|
}
|
|
if (!std::filesystem::exists("build")) {
|
|
spdlog::get("filesystem")->info("Creating 'build' directory");
|
|
createDir("build");
|
|
}
|
|
|
|
switch (m_BuildType) {
|
|
case none:
|
|
spdlog::get("filesystem")
|
|
->debug("Checking 'build/debug' directory.");
|
|
if (!std::filesystem::is_directory("build/debug")) {
|
|
spdlog::get("filesystem")
|
|
->warn("'build/debug' is not a directory. Deleting.");
|
|
deleteDir("build/debug");
|
|
}
|
|
if (!std::filesystem::exists("build/debug")) {
|
|
spdlog::get("filesystem")
|
|
->info("Creating 'build/debug' directory.");
|
|
createDir("build/debug");
|
|
}
|
|
|
|
spdlog::get("filesystem")
|
|
->debug("Checking 'build/release' directory.");
|
|
if (!std::filesystem::is_directory("build/release")) {
|
|
spdlog::get("filesystem")
|
|
->warn("'build/release' is not a directory. Deleting.");
|
|
deleteDir("build/release");
|
|
}
|
|
if (!std::filesystem::exists("build/release")) {
|
|
spdlog::get("filesystem")
|
|
->info("Creating 'build/release' directory.");
|
|
createDir("build/release");
|
|
}
|
|
|
|
spdlog::get("filesystem")
|
|
->debug("Checking 'build/relwithdeb' directory.");
|
|
if (!std::filesystem::is_directory("build/relwithdeb")) {
|
|
spdlog::get("filesystem")
|
|
->warn("'build/relwithdeb' is not a directory. Deleting.");
|
|
deleteDir("build/relwithdeb");
|
|
}
|
|
if (!std::filesystem::exists("build/relwithdeb")) {
|
|
spdlog::get("filesystem")
|
|
->info("Creating 'build/relwithdeb' directory.");
|
|
createDir("build/relwithdeb");
|
|
}
|
|
|
|
spdlog::get("filesystem")
|
|
->debug("Checking 'build/minsizerel' directory.");
|
|
if (!std::filesystem::is_directory("build/minsizerel")) {
|
|
spdlog::get("filesystem")
|
|
->warn("'build/minsizerel' is not a directory. Deleting.");
|
|
deleteDir("build/minsizerel");
|
|
}
|
|
if (!std::filesystem::exists("build/minsizerel")) {
|
|
spdlog::get("filesystem")
|
|
->info("Creating 'build/minsizerel' directory.");
|
|
createDir("build/minsizerel");
|
|
};
|
|
|
|
break;
|
|
case debug:
|
|
spdlog::get("filesystem")
|
|
->debug("Checking 'build/debug' directory.");
|
|
if (!std::filesystem::is_directory("build/debug")) {
|
|
spdlog::get("filsystem")
|
|
->warn("'build/debug' is not a directory. Deleting.");
|
|
deleteDir("build/debug");
|
|
}
|
|
if (!std::filesystem::exists("build/debug")) {
|
|
spdlog::get("filesystem")
|
|
->info("Creating 'build/debug' directory.");
|
|
createDir("build/debug");
|
|
}
|
|
break;
|
|
case release:
|
|
spdlog::get("filesystem")
|
|
->debug("Checking 'build/release' directory.");
|
|
if (!std::filesystem::is_directory("build/release")) {
|
|
spdlog::get("filesystem")
|
|
->warn("'build/release' is not a directory. Deleting.");
|
|
deleteDir("build/release");
|
|
}
|
|
if (!std::filesystem::exists("build/release")) {
|
|
spdlog::get("filesystem")
|
|
->info("Creating 'build/release' directory.");
|
|
createDir("build/release");
|
|
}
|
|
break;
|
|
case relwithdeb:
|
|
spdlog::get("filesystem")
|
|
->debug("Checking 'build/relwithdeb' directory.");
|
|
if (!std::filesystem::is_directory("build/relwithdeb")) {
|
|
spdlog::get("filesystem")
|
|
->warn("'build/relwithdeb' is not a directory. Deleting.");
|
|
deleteDir("build/relwithdeb");
|
|
}
|
|
if (!std::filesystem::exists("build/relwithdeb")) {
|
|
spdlog::get("filesystem")
|
|
->info("Creating 'build/relwithdeb' directory.");
|
|
createDir("build/relwithdeb");
|
|
};
|
|
break;
|
|
case minsizerel:
|
|
spdlog::get("filesystem")
|
|
->debug("Checking 'build/minsizerel' directory.");
|
|
if (!std::filesystem::is_directory("build/minsizerel")) {
|
|
spdlog::get("filesystem")
|
|
->warn("'build/minsizerel' is not a directory. Deleting.");
|
|
deleteDir("build/minsizerel");
|
|
}
|
|
if (!std::filesystem::exists("build/minsizerel")) {
|
|
spdlog::get("filesystem")
|
|
->info("Creating 'build/minsizerel' directory.");
|
|
createDir("build/minsizerel");
|
|
};
|
|
break;
|
|
}
|
|
|
|
spdlog::get("filesystem")->info("All directories checked.");
|
|
}
|