- ::onExit now provides a set of all changeѕ tasks to the hook script, in
  read-only form.
This commit is contained in:
Paul Beckingham 2014-09-14 17:04:12 -04:00
parent d0fd3bac4a
commit bfc6e38851
3 changed files with 39 additions and 3 deletions

View file

@ -157,11 +157,18 @@ void Hooks::onExit ()
context.timer_hooks.start ();
std::vector <Task> changes;
context.tdb2.get_changes (changes);
std::string input;
std::vector <Task>::const_iterator t;
for (t = changes.begin (); t != changes.end (); ++t)
input += t->composeJSON () + "\n";
std::vector <std::string> matchingScripts = scripts ("on-exit");
std::vector <std::string>::iterator i;
for (i = matchingScripts.begin (); i != matchingScripts.end (); ++i)
{
std::string input;
std::string output;
std::vector <std::string> args;
int status = execute (*i, args, input, output);

View file

@ -671,6 +671,8 @@ void TDB2::commit ()
dump ();
context.timer_commit.start ();
gather_changes ();
pending.commit ();
completed.commit ();
undo.commit ();
@ -688,6 +690,30 @@ void TDB2::commit ()
context.timer_commit.stop ();
}
////////////////////////////////////////////////////////////////////////////////
void TDB2::gather_changes ()
{
_changes.clear ();
std::vector <Task>::iterator i;
for (i = pending._added_tasks.begin (); i != pending._added_tasks.end (); ++i)
_changes.push_back (*i);
for (i = pending._modified_tasks.begin (); i != pending._modified_tasks.end (); ++i)
_changes.push_back (*i);
for (i = completed._added_tasks.begin (); i != completed._added_tasks.end (); ++i)
_changes.push_back (*i);
for (i = completed._modified_tasks.begin (); i != completed._modified_tasks.end (); ++i)
_changes.push_back (*i);
}
////////////////////////////////////////////////////////////////////////////////
void TDB2::get_changes (std::vector <Task>& changes)
{
changes = _changes;
}
////////////////////////////////////////////////////////////////////////////////
void TDB2::revert ()
{

View file

@ -103,6 +103,7 @@ public:
void add (Task&, bool add_to_backlog = true);
void modify (Task&, bool add_to_backlog = true);
void commit ();
void get_changes (std::vector <Task>&);
void revert ();
int gc ();
int next_id ();
@ -126,6 +127,7 @@ public:
void dump ();
private:
void gather_changes ();
void update (const std::string&, Task&, const bool, std::vector <Task>&);
bool verifyUniqueUUID (const std::string&);
void show_diff (const std::string&, const std::string&, const std::string&);
@ -141,8 +143,9 @@ public:
TF2 backlog;
private:
std::string _location;
int _id;
std::string _location;
int _id;
std::vector <Task> _changes;
};
#endif