Refactor just a little
This commit is contained in:
170
src/filesystem.cpp
Normal file
170
src/filesystem.cpp
Normal file
@@ -0,0 +1,170 @@
|
||||
#include "filesystem.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "logging.h"
|
||||
|
||||
void deleteDir(const std::filesystem::path& path, bool dryrun) {
|
||||
if (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 createDir(const std::filesystem::path& path, bool dryrun) {
|
||||
if (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 checkBuildDirs(const BuildType buildType, bool dryrun) {
|
||||
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", dryrun);
|
||||
}
|
||||
if (!std::filesystem::exists("build")) {
|
||||
spdlog::get("filesystem")->info("Creating 'build' directory");
|
||||
createDir("build", dryrun);
|
||||
}
|
||||
|
||||
switch (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", dryrun);
|
||||
}
|
||||
if (!std::filesystem::exists("build/debug")) {
|
||||
spdlog::get("filesystem")
|
||||
->info("Creating 'build/debug' directory.");
|
||||
createDir("build/debug", dryrun);
|
||||
}
|
||||
|
||||
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", dryrun);
|
||||
}
|
||||
if (!std::filesystem::exists("build/release")) {
|
||||
spdlog::get("filesystem")
|
||||
->info("Creating 'build/release' directory.");
|
||||
createDir("build/release", dryrun);
|
||||
}
|
||||
|
||||
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", dryrun);
|
||||
}
|
||||
if (!std::filesystem::exists("build/relwithdeb")) {
|
||||
spdlog::get("filesystem")
|
||||
->info("Creating 'build/relwithdeb' directory.");
|
||||
createDir("build/relwithdeb", dryrun);
|
||||
}
|
||||
|
||||
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", dryrun);
|
||||
}
|
||||
if (!std::filesystem::exists("build/minsizerel")) {
|
||||
spdlog::get("filesystem")
|
||||
->info("Creating 'build/minsizerel' directory.");
|
||||
createDir("build/minsizerel", dryrun);
|
||||
};
|
||||
|
||||
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", dryrun);
|
||||
}
|
||||
if (!std::filesystem::exists("build/debug")) {
|
||||
spdlog::get("filesystem")
|
||||
->info("Creating 'build/debug' directory.");
|
||||
createDir("build/debug", dryrun);
|
||||
}
|
||||
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", dryrun);
|
||||
}
|
||||
if (!std::filesystem::exists("build/release")) {
|
||||
spdlog::get("filesystem")
|
||||
->info("Creating 'build/release' directory.");
|
||||
createDir("build/release", dryrun);
|
||||
}
|
||||
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", dryrun);
|
||||
}
|
||||
if (!std::filesystem::exists("build/relwithdeb")) {
|
||||
spdlog::get("filesystem")
|
||||
->info("Creating 'build/relwithdeb' directory.");
|
||||
createDir("build/relwithdeb", dryrun);
|
||||
};
|
||||
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", dryrun);
|
||||
}
|
||||
if (!std::filesystem::exists("build/minsizerel")) {
|
||||
spdlog::get("filesystem")
|
||||
->info("Creating 'build/minsizerel' directory.");
|
||||
createDir("build/minsizerel", dryrun);
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
spdlog::get("filesystem")->info("All directories checked.");
|
||||
}
|
||||
Reference in New Issue
Block a user