From b1c0e67581d6ea4522b57bcb90a2130c373e5563 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Wed, 14 May 2014 21:44:22 -0400 Subject: [PATCH] Hooks - ::onModify now conforms to design. --- src/Hooks.cpp | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/Hooks.cpp b/src/Hooks.cpp index c2e56b345..020ae1464 100644 --- a/src/Hooks.cpp +++ b/src/Hooks.cpp @@ -70,35 +70,37 @@ void Hooks::onLaunch () { context.timer_hooks.start (); + std::vector matchingScripts = scripts ("on-launch"); std::vector ::iterator i; - for (i = _scripts.begin (); i != _scripts.end (); ++i) + for (i = matchingScripts.begin (); i != matchingScripts.end (); ++i) { - if (i->find ("/on-launch") != std::string::npos) + std::string output; + int status = execute (*i, "", output); + + std::vector lines; + split (lines, output, '\n'); + std::vector ::iterator line; + + if (status == 0) { - File script (*i); - if (script.executable ()) + for (line = lines.begin (); line != lines.end (); ++line) { - std::string output; - int status = execute (*i, "", output); - - std::vector lines; - split (lines, output, '\n'); - std::vector ::iterator line; - - if (status == 0) + if (line->length () && (*line)[0] == '{') { - for (line = lines.begin (); line != lines.end (); ++line) - context.header (*line); + Task newTask (*line); + context.tdb2.add (newTask); } else - { - for (line = lines.begin (); line != lines.end (); ++line) - context.error (*line); - - throw 0; // This is how hooks silently terminate processing. - } + context.header (*line); } } + else + { + for (line = lines.begin (); line != lines.end (); ++line) + context.error (*line); + + throw 0; // This is how hooks silently terminate processing. + } } context.timer_hooks.stop ();