]> git.e2factory.org Git - e2factory.git/commitdiff
Extend e2lib.read_extension_config()
authorTobias Ulmer <tu@emlix.com>
Wed, 4 Dec 2013 14:17:12 +0000 (15:17 +0100)
committerTobias Ulmer <tu@emlix.com>
Wed, 16 Nov 2016 14:41:17 +0000 (15:41 +0100)
Signed-off-by: Tobias Ulmer <tu@emlix.com>
generic/e2lib.lua
global/e2-install-e2.lua

index 79735b461a37e16e0bae5a1678e8e251eb619f38..4b60d7389f589902a5957106755f09f357007d21 100644 (file)
@@ -923,31 +923,41 @@ function e2lib.get_global_config()
     return false, err.new("no config file available")
 end
 
---- read the local extension configuration
--- This function must run while being located in the projects root directory
--- @return the extension configuration table
--- @return an error object on failure
-function e2lib.read_extension_config()
-    local e = err.new("reading extension config file: %s",
-    e2lib.globals.extension_config)
-    local rc = e2lib.exists(e2lib.globals.extension_config)
+--- Read the local extension configuration. The extension configuration table
+-- may be empty if the extension config does not exist or only contains
+-- an empty configuration.
+-- @param root Project root directory.
+-- @return Extension configuration table (which may be empty), or false on error.
+-- @return Error object on failure.
+function e2lib.read_extension_config(root)
+    local rc, re, e, extension_config
+
+    extension_config = e2lib.join(root, e2lib.globals.extension_config)
+
+    e = err.new("reading extension config file: %s", extension_config)
+
+    rc = e2lib.exists(extension_config)
     if not rc then
-        return false, e:append("config file does not exist")
+        e2lib.warnf("WOTHER", "extension configuration not available")
+        return {}
     end
-    e2lib.logf(3, "reading extension file: %s", e2lib.globals.extension_config)
+
+    e2lib.logf(3, "reading extension file: %s", extension_config)
+
     local c = {}
     c.extensions = function(x)
         c.data = x
     end
-    local rc, re = e2lib.dofile2(e2lib.globals.extension_config, c, true)
+    rc, re = e2lib.dofile2(extension_config, c, true)
     if not rc then
         return false, e:cat(re)
     end
-    local extension = c.data
-    if not extension then
+
+    if not c.data then
         return false, e:append("invalid extension configuration")
     end
-    return extension, nil
+
+    return c.data
 end
 
 --- Successively returns the file names in the directory.
index 457e554ead455e243e0e252dc6f7def29438835c..862946006d8a3d847c88ddeb27839eebc13a6fd3 100644 (file)
@@ -116,15 +116,9 @@ local function e2_install_e2(arg)
 
     e2lib.logf(2, "installing local tools")
 
-    local extensions
-    if e2lib.exists(e2lib.globals.extension_config) then
-        extensions, re = e2lib.read_extension_config()
-        if not extensions then
-            return false, e:cat(re)
-        end
-    else
-        e2lib.warnf("WOTHER", "extension configuration not available")
-        extensions = {}  -- empty list
+    local extensions, re = e2lib.read_extension_config(root)
+    if not extensions then
+        return false, e:cat(re)
     end
 
     local ef = e2lib.join(root, e2lib.globals.e2version_file)