reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit e16fa3a08a2c67e991f43e6611e5b614611924bd
parent 1915c1852273dced2591448b4eb9eec1702aaaae
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Tue, 19 Jan 2016 12:32:36 -0500

log file removal during package update

Diffstat:
Msrc/task.cpp | 3++-
Msrc/task.hpp | 6++++--
Msrc/transaction.cpp | 9+++++----
Msrc/transaction.hpp | 4++--
4 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/task.cpp b/src/task.cpp @@ -114,6 +114,7 @@ void InstallTask::saveSource(Download *dl, Source *src) m_newFiles.push_back({tmpPath, targetPath}); const auto old = m_oldFiles.find(targetPath); + if(old != m_oldFiles.end()) m_oldFiles.erase(old); @@ -170,7 +171,7 @@ void RemoveTask::remove(const Path &file) return; } else - m_removedFiles.push_back(file); + m_removedFiles.insert(file); Path dir = file; diff --git a/src/task.hpp b/src/task.hpp @@ -63,6 +63,8 @@ class InstallTask : public Task { public: InstallTask(Version *ver, const std::set<Path> &oldFiles, Transaction *); + const std::set<Path> &removedFiles() const { return m_oldFiles; } + protected: void doCommit() override; void doRollback() override; @@ -80,7 +82,7 @@ class RemoveTask : public Task { public: RemoveTask(const std::vector<Path> &files, Transaction *); - const std::vector<Path> &removedFiles() const { return m_removedFiles; } + const std::set<Path> &removedFiles() const { return m_removedFiles; } protected: void doCommit() override; @@ -90,7 +92,7 @@ private: void remove(const Path &); std::vector<Path> m_files; - std::vector<Path> m_removedFiles; + std::set<Path> m_removedFiles; }; #endif diff --git a/src/transaction.cpp b/src/transaction.cpp @@ -134,6 +134,9 @@ void Transaction::install() m_registry->push(ver); + const set<Path> &removedFiles = task->removedFiles(); + m_removals.insert(removedFiles.begin(), removedFiles.end()); + if(!m_registry->addToREAPER(ver, m_root)) { addError( "Cannot register the package in REAPER. " @@ -167,10 +170,8 @@ void Transaction::uninstall(const Remote &remote) RemoveTask *task = new RemoveTask(allFiles, this); task->onCommit([=] { - const vector<Path> &removedFiles = task->removedFiles(); - - m_removals.insert(m_removals.end(), - removedFiles.begin(), removedFiles.end()); + const set<Path> &removedFiles = task->removedFiles(); + m_removals.insert(removedFiles.begin(), removedFiles.end()); }); addTask(task); diff --git a/src/transaction.hpp b/src/transaction.hpp @@ -62,7 +62,7 @@ public: size_t taskCount() const { return m_tasks.size(); } const PackageEntryList &newPackages() const { return m_new; } const PackageEntryList &updates() const { return m_updates; } - const std::vector<Path> &removals() const { return m_removals; } + const std::set<Path> &removals() const { return m_removals; } const ErrorList &errors() const { return m_errors; } private: @@ -100,7 +100,7 @@ private: PackageEntryList m_packages; PackageEntryList m_new; PackageEntryList m_updates; - std::vector<Path> m_removals; + std::set<Path> m_removals; ErrorList m_errors; std::vector<Task *> m_tasks;