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:
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;