]> git.e2factory.org Git - e2factory.git/commitdiff
e2-build: allow enabling/disabling writeback on command line
authorGordon Hecker <gh@emlix.com>
Mon, 6 Dec 2010 08:32:32 +0000 (09:32 +0100)
committerGordon Hecker <gh@emlix.com>
Mon, 6 Dec 2010 09:28:15 +0000 (10:28 +0100)
Signed-off-by: Gordon Hecker <gh@emlix.com>
local/build.lua

index da67d006a2f1c9627bf9a502595bf3b03cba4f38..a42fe2879d979cf1a9d8f86341d92079b8203987 100755 (executable)
@@ -51,6 +51,43 @@ e2option.flag("playground", "prepare environment but do not build")
 e2option.flag("keep", "do not remove chroot environment after build")
 e2option.flag("buildnumber", "use real build numbers")
 e2option.flag("buildid", "display buildids and exit")
+-- cache is not yet initialized when parsing command line options, so
+-- remember settings in order of appearance, and perform settings as soon
+-- as the cache is initialized.
+local writeback = {}
+local function disable_writeback(server)
+       table.insert(writeback, { set = "disable", server = server })
+end
+local function enable_writeback(server)
+       table.insert(writeback, { set = "enable", server = server })
+end
+local function perform_writeback_settings(writeback)
+       local rc, re
+       local enable_msg = "enabling writeback for server '%s' [--writeback]"
+       local disable_msg =
+                       "disabling writeback for server '%s' [--no-writeback]"
+       for _,set in ipairs(writeback) do
+               if set.set == "disable" then
+                       e2lib.logf(3, disable_msg, set.server)
+                       rc, re = info.cache:set_writeback(set.server, false)
+                       if not rc then
+                               local e = new_error(disable_msg, set.server)
+                               e2lib.abort(e:cat(re))
+                       end
+               elseif set.set == "enable" then
+                       e2lib.logf(3, enable_msg, set.server)
+                       rc, re = info.cache:set_writeback(set.server, true)
+                       if not rc then
+                               local e = new_error(enable_msg, set.server)
+                               e2lib.abort(e:cat(re))
+                       end
+               end
+       end
+end
+e2option.option("no-writeback", "disable writeback for server", nil,
+                                               disable_writeback, "SERVER")
+e2option.option("writeback", "enable writeback for server", nil,
+                                               enable_writeback, "SERVER")
 
 local opts = e2option.parse(arg)
 
@@ -64,6 +101,7 @@ info, re = e2tool.collect_project_info(info)
 if not info then
   e2lib.abort(re)
 end
+perform_writeback_settings(writeback)
 local rc, re = e2tool.check_project_info(info)
 if not rc then
   e2lib.abort(re)