From 89724cd3d3b3cc326a1419eeb856aa6b289abbe5 Mon Sep 17 00:00:00 2001 From: Sude Date: Fri, 13 Oct 2023 20:29:09 +0300 Subject: [PATCH] Add option to delete orphaned files Renamed --galaxy-delete-orphans to --delete-orphans and made it also work with --check-orphans --- include/config.h | 2 +- main.cpp | 2 +- src/downloader.cpp | 13 +++++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/include/config.h b/include/config.h index 4e2fd60..12413ad 100644 --- a/include/config.h +++ b/include/config.h @@ -53,7 +53,7 @@ struct DownloadConfig bool bIgnoreDLCCount; bool bDuplicateHandler; bool bGalaxyDependencies; - bool bGalaxyDeleteOrphans; + bool bDeleteOrphans; }; struct gameSpecificConfig diff --git a/main.cpp b/main.cpp index fdafe34..9eabb3c 100644 --- a/main.cpp +++ b/main.cpp @@ -211,6 +211,7 @@ int main(int argc, char *argv[]) ("new", bpo::value(&Globals::globalConfig.bNew)->zero_tokens()->default_value(false), "List/download only games with new flag set") ("clear-update-flags", bpo::value(&bClearUpdateNotifications)->zero_tokens()->default_value(false), "Clear update notification flags") ("check-orphans", bpo::value(&Globals::globalConfig.sOrphanRegex)->implicit_value(""), check_orphans_text.c_str()) + ("delete-orphans", bpo::value(&Globals::globalConfig.dlConf.bDeleteOrphans)->zero_tokens()->default_value(false), "Delete orphaned files during --check-orphans and --galaxy-install") ("status", bpo::value(&Globals::globalConfig.bCheckStatus)->zero_tokens()->default_value(false), "Show status of files\n\nOutput format:\nstatuscode gamename filename filesize filehash\n\nStatus codes:\nOK - File is OK\nND - File is not downloaded\nMD5 - MD5 mismatch, different version\nFS - File size mismatch, incomplete download\n\nSee also --no-fast-status-check option") ("save-config", bpo::value(&Globals::globalConfig.bSaveConfig)->zero_tokens()->default_value(false), "Create config file with current settings") ("reset-config", bpo::value(&Globals::globalConfig.bResetConfig)->zero_tokens()->default_value(false), "Reset config settings to default") @@ -299,7 +300,6 @@ int main(int argc, char *argv[]) ("galaxy-no-dependencies", bpo::value(&bNoGalaxyDependencies)->zero_tokens()->default_value(false), "Don't download dependencies during --galaxy-install") ("subdir-galaxy-install", bpo::value(&Globals::globalConfig.dirConf.sGalaxyInstallSubdir)->default_value("%install_dir%"), galaxy_install_subdir_text.c_str()) ("galaxy-cdn-priority", bpo::value(&sGalaxyCDN)->default_value("edgecast,highwinds,akamai,lumen,gog_cdn"), galaxy_cdn_priority_text.c_str()) - ("galaxy-delete-orphans", bpo::value(&Globals::globalConfig.dlConf.bGalaxyDeleteOrphans)->zero_tokens()->default_value(false), "Delete orphaned files during --galaxy-install") ; options_cli_all.add(options_cli_no_cfg).add(options_cli_cfg).add(options_cli_experimental); diff --git a/src/downloader.cpp b/src/downloader.cpp index dd0b11e..a575707 100644 --- a/src/downloader.cpp +++ b/src/downloader.cpp @@ -1773,7 +1773,16 @@ void Downloader::checkOrphans() { for (unsigned int i = 0; i < orphans.size(); ++i) { - std::cout << orphans[i] << std::endl; + if (Globals::globalConfig.dlConf.bDeleteOrphans) + { + std::string filepath = orphans[i]; + std::cout << "Deleting " << filepath << std::endl; + if (boost::filesystem::exists(filepath)) + if (!boost::filesystem::remove(filepath)) + std::cerr << "Failed to delete " << filepath << std::endl; + } + else + std::cout << orphans[i] << std::endl; } } else @@ -3945,7 +3954,7 @@ void Downloader::galaxyInstallGameById(const std::string& product_id, int build_ std::cout << "\t" << orphans.size() << " orphaned files" << std::endl; for (unsigned int i = 0; i < orphans.size(); ++i) { - if (Globals::globalConfig.dlConf.bGalaxyDeleteOrphans) + if (Globals::globalConfig.dlConf.bDeleteOrphans) { std::string filepath = orphans[i]; std::cout << "Deleting " << filepath << std::endl;