diff --git a/src/conf.cpp b/src/conf.cpp index bb39aa6..9a41bc1 100644 --- a/src/conf.cpp +++ b/src/conf.cpp @@ -101,16 +101,42 @@ const std::string& get_conf(const std::string& name) return itor->second; } +bool g_redownload = false; +bool g_redecompress = false; bool g_clean = false; +bool g_dry = false; +bool g_verbose = false; +bool conf::verbose() { return g_verbose; } +bool conf::dry() { return g_dry; } +bool conf::redownload() { return g_redownload; } +bool conf::redecompress() { return g_redecompress; } +bool conf::clean() { return g_clean; } -bool conf::verbose() { return true; } -bool conf::dry() { return false; } std::string conf::mo_org() { return "ModOrganizer2"; } std::string conf::mo_branch() { return "master"; } -bool conf::clean() { return g_clean; } -void conf::set_clean(bool b) { g_clean = b; } +void conf::set(int argc, char** argv) +{ + for (int i=0; i tasks; + conf::set(argc, argv); + for (int i=1; i auto run_tool(Tool&& t) diff --git a/src/tasks/tasks.h b/src/tasks/tasks.h index 2173ab1..01db1be 100644 --- a/src/tasks/tasks.h +++ b/src/tasks/tasks.h @@ -181,6 +181,7 @@ class openssl : public basic_task { public: openssl(); + static fs::path source_path(); static fs::path include_path(); @@ -195,8 +196,8 @@ private: void copy_dlls_to(const fs::path& dir); void copy_pdbs_to(const fs::path& dir); - static fs::path build_path(); static url source_url(); + static fs::path build_path(); static std::vector output_names(); static std::smatch parse_version(); static std::string version_no_tags(); @@ -208,7 +209,6 @@ class pyqt : public basic_task { public: pyqt(); - static fs::path source_path(); protected: @@ -216,8 +216,8 @@ protected: void do_build_and_install() override; static url source_url(); - static fs::path build_dir(); static fs::path sip_install_file(); + static fs::path build_path(); }; @@ -278,6 +278,7 @@ public: protected: void do_fetch() override; void do_build_and_install() override; + void do_clean() override; private: static url source_url(); diff --git a/src/tools.cpp b/src/tools.cpp index f40e425..f7a6704 100644 --- a/src/tools.cpp +++ b/src/tools.cpp @@ -126,7 +126,12 @@ void downloader::do_run() for (auto&& u : urls_) { const auto file = path_for_url(u); - if (fs::exists(file)) + + if (conf::redownload()) + { + op::delete_file(file, op::optional); + } + else if (fs::exists(file)) { file_ = file; debug("download " + file_.string() + " already exists"); @@ -281,7 +286,11 @@ decompresser& decompresser::output(const fs::path& dir) void decompresser::do_run() { - if (fs::exists(interrupt_file())) + if (conf::redecompress()) + { + op::delete_directory(where_, op::optional); + } + else if (fs::exists(interrupt_file())) { debug("found interrupt file " + interrupt_file().string()); info("previous decompression was interrupted; resuming"); @@ -559,8 +568,11 @@ void cmake::do_run() { for (auto&& [k, g] : all_generators()) { - op::delete_directory(root_ / g.output_dir(arch::x86)); - op::delete_directory(root_ / g.output_dir(arch::x64)); + op::delete_directory( + root_ / g.output_dir(arch::x86), op::optional); + + op::delete_directory( + root_ / g.output_dir(arch::x64), op::optional); } } diff --git a/src/utility.cpp b/src/utility.cpp index b16fed3..b84dc76 100644 --- a/src/utility.cpp +++ b/src/utility.cpp @@ -170,8 +170,7 @@ file_deleter::~file_deleter() void file_deleter::delete_now() { - if (fs::exists(p_)) - op::delete_file(p_); + op::delete_file(p_, op::optional); } void file_deleter::cancel() @@ -193,8 +192,7 @@ directory_deleter::~directory_deleter() void directory_deleter::delete_now() { - if (fs::exists(p_)) - op::delete_directory(p_); + op::delete_directory(p_, op::optional); } void directory_deleter::cancel()