Look into system hook dir if scripts not found in homedir
[gregoa/zavai.git] / src / core.vala
index 3c31ccde9b6ad22b1858c6e6fea2b924fe6ebfa5..c971a29b5d5fef6c75649673ca5be662c78b0127 100644 (file)
@@ -153,26 +153,40 @@ public abstract class Service : Object, Resource {
 
 public abstract class ScriptService : Service
 {
+    protected string script;
+
     protected bool script_start()
     {
+        string script = zavai.config.find_script(name);
+        if (script == null)
+        {
+            zavai.log.error("Hook " + name + " does not exist");
+            return false;
+        }
         try {
             // Then run our own script
-            zavai.config.run_script(zavai.config.homedir + "/" + name + " start");
+            zavai.config.run_script(script + " start");
             return true;
         } catch (Error e) {
-            zavai.log.error("Running " + zavai.config.homedir + "/" + name + " start: " + e.message);
+            zavai.log.error("Running " + script + " start: " + e.message);
             return false;
         }
     }
 
     protected bool script_stop()
     {
+        string script = zavai.config.find_script(name);
+        if (script == null)
+        {
+            zavai.log.error("Hook " + name + " does not exist");
+            return false;
+        }
         try {
             // Then run our own script
-            zavai.config.run_script(zavai.config.homedir + "/" + name + " stop");
+            zavai.config.run_script(script + " stop");
             return true;
         } catch (Error e) {
-            zavai.log.error("Running " + zavai.config.homedir + "/" + name + " stop: " + e.message);
+            zavai.log.error("Running " + script + " stop: " + e.message);
             return false;
         }
     }
@@ -181,7 +195,13 @@ public abstract class ScriptService : Service
     {
         string std_out;
         string std_err;
-        string command = zavai.config.homedir + "/" + name + " status";
+        string script = zavai.config.find_script(name);
+        if (script == null)
+        {
+            zavai.log.error("Hook " + name + " does not exist");
+            return false;
+        }
+        string command = script + " status";
         int res = zavai.config.run_script_sync(command, out std_out, out std_err);
         if (res != 0)
         {