#include #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."); }