socsvn commit: r270732 - soc2014/pedrosouza/lua_loader/head/sys/boot/lua

pedrosouza at FreeBSD.org pedrosouza at FreeBSD.org
Fri Jul 11 21:26:55 UTC 2014


Author: pedrosouza
Date: Fri Jul 11 21:26:54 2014
New Revision: 270732
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=270732

Log:
  WIP: config.lua

Modified:
  soc2014/pedrosouza/lua_loader/head/sys/boot/lua/config.lua

Modified: soc2014/pedrosouza/lua_loader/head/sys/boot/lua/config.lua
==============================================================================
--- soc2014/pedrosouza/lua_loader/head/sys/boot/lua/config.lua	Fri Jul 11 19:40:50 2014	(r270731)
+++ soc2014/pedrosouza/lua_loader/head/sys/boot/lua/config.lua	Fri Jul 11 21:26:54 2014	(r270732)
@@ -1,15 +1,67 @@
 config = {};
+modules = {};
+
+function config.setKey(k, n, v)
+    if modules[k] == nil then 
+        modules[k] = {};
+    end
+    modules[k][n] = v;
+end
 
 pattern_table = {
-    [1] = {str = "^%s*(#.*)", process = function(k, v) print("Processed(comment) -> "..k.."\n"); end },
-    [2] = {str = "^%s*([%w_]+)_load%s*=%s*\"([%w%s%p]-)\"%s*(.*)", process = function(k, v) print("Processed(load) -> "..k..":"..v.."\n"); end },       --module_load="value"
-    [3] = {str = "^%s*([%w_]+)_name%s*=%s*\"([%w%s%p]-)\"%s*(.*)", process = function(k, v) print("Processed(name) -> "..k..":"..v.."\n"); end },       --module_name="value"
-    [4] = {str = "^%s*([%w_]+)_type%s*=%s*\"([%w%s%p]-)\"%s*(.*)", process = function(k, v) print("Processed(type) -> "..k..":"..v.."\n"); end },       --module_type="value"
-    [5] = {str = "^%s*([%w_]+)_flags%s*=%s*\"([%w%s%p]-)\"%s*(.*)", process = function(k, v) print("Processed(flags) -> "..k..":"..v.."\n"); end },     --module_flags="value"
-    [6] = {str = "^%s*([%w_]+)_before%s*=%s*\"([%w%s%p]-)\"%s*(.*)", process = function(k, v) print("Processed(before) -> "..k..":"..v.."\n"); end },   --module_before="value"
-    [7] = {str = "^%s*([%w_]+)_after%s*=%s*\"([%w%s%p]-)\"%s*(.*)", process = function(k, v) print("Processed(after) -> "..k..":"..v.."\n"); end },     --module_after="value"
-    [8] = {str = "^%s*([%w_]+)_error%s*=%s*\"([%w%s%p]-)\"%s*(.*)", process = function(k, v) print("Processed(error) -> "..k..":"..v.."\n"); end },     --module_error="value"
-    [9] = {str = "^%s*([%w%p]+)%s*=%s*\"([%w%s%p]-)\"%s*(.*)", process = function(k, v) print("Processed(environment) -> "..k..":"..v.."\n"); end }     --env_var="value"
+    [1] = {str = "^%s*(#.*)", process = function(k, v)  end },
+--  module_load="value"
+    [2] = {str = "^%s*([%w_]+)_load%s*=%s*\"([%w%s%p]-)\"%s*(.*)", 
+    process = function(k, v) 
+        if modules[k] == nil then 
+            modules[k] = {};
+        end 
+        modules[k].load = string.upper(v);
+    end },
+--  module_name="value"
+    [3] = {str = "^%s*([%w_]+)_name%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
+    process = function(k, v) 
+        config.setKey(k, "name", v);
+    end }, 
+--  module_type="value"    
+    [4] = {str = "^%s*([%w_]+)_type%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
+    process = function(k, v) 
+        config.setKey(k, "type", v);
+    end },
+--  module_flags="value"
+    [5] = {str = "^%s*([%w_]+)_flags%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
+    process = function(k, v) 
+        config.setKey(k, "flags", v);
+    end },
+--  module_before="value"
+    [6] = {str = "^%s*([%w_]+)_before%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
+    process = function(k, v) 
+        config.setKey(k, "before", v);
+    end },
+--  module_after="value"
+    [7] = {str = "^%s*([%w_]+)_after%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
+    process = function(k, v) 
+        config.setKey(k, "after", v);
+    end },
+--  module_error="value"
+    [8] = {str = "^%s*([%w_]+)_error%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
+    process = function(k, v) 
+        config.setKey(k, "error", v);
+    end },
+--  exec="command"
+    [9] = {str = "^%s*exec%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
+    process = function(k, v) 
+        if loader.perform(k) ~= 0 then
+            print("Failed to exec '"..k.."'");
+        end
+    end },
+--  env_var="value"
+    [10] = {str = "^%s*([%w%p]+)%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
+    process = function(k, v) 
+        if loader.perform("set "..k.."="..v) ~= 0 then
+            print("Failed to set '"..k.."' with value: "..v);
+        end
+    end }
 };
 
 function config.isValidComment(c)
@@ -21,7 +73,40 @@
     return true;
 end
 
-function config.load(name)
+function config.loadmod(mod)
+    for k, v in pairs(mod) do
+        if v.load == "YES" then
+            local str = "load ";
+            if v.flags ~= nil then str = str .. v.flags .. " "; end
+            if v.type ~= nil then str = str .. "-t " .. v.type .. " "; end
+            if v.name ~= nil then str = str .. v.name; else str = str .. k; end
+            
+            if v.before ~= nil then
+                if loader.perform(v.before) ~= 0 then
+                    print("Failed to execute '"..v.before.."' before loading '"..k.."'\n");
+                end
+            end
+            
+            if loader.perform(str) ~= 0 then
+                print("Failed to execute '" .. str .. "'\n");
+                if v.error ~= nil then
+                    loader.perform(v.error);
+                end 
+            end
+            
+            if v.after ~= nil then
+                if loader.perform(v.after) ~= 0 then
+                    print("Failed to execute '"..v.after.."' after loading '"..k.."'\n");
+                end
+            end
+            
+        else
+            print("Skiping module '".. k .. "'\n");
+        end
+    end
+end
+
+function config.parse(name)
     local f = io.open(name);
     if f == nil then
         print("Failed to open config : " .. name);


More information about the svn-soc-all mailing list