summaryrefslogtreecommitdiff
path: root/lib/gitano/config.lua
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-03-29 16:56:44 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-03-29 16:56:44 +0100
commitbf1bcfe43716f0ca5adbb48d3fc972ff07fb636a (patch)
treef0d6a0f755617004b1e9963b5688b1dfa1ed11d0 /lib/gitano/config.lua
parentf9aa94c3cb584ddd3e6792ca33b35c4cca42d862 (diff)
downloadgitano-bf1bcfe43716f0ca5adbb48d3fc972ff07fb636a.tar.gz
CONFIG: Allow for pre.rules so we can run rules before the repository rules
Diffstat (limited to 'lib/gitano/config.lua')
-rw-r--r--lib/gitano/config.lua26
1 files changed, 21 insertions, 5 deletions
diff --git a/lib/gitano/config.lua b/lib/gitano/config.lua
index faf1c81..4f81f8f 100644
--- a/lib/gitano/config.lua
+++ b/lib/gitano/config.lua
@@ -38,6 +38,10 @@ local function parse_admin_config(commit)
return nil, "No core rules file"
end
+ if flat_tree["pre.rules"] and not is_blob(flat_tree["pre.rules"]) then
+ return nil, "pre.rules is not a file"
+ end
+
local conf_fn, conf_globals =
sb.wrap(flat_tree["site.conf"].obj.content,
"gitano-admin:" .. commit.sha .. ":site.conf",
@@ -62,14 +66,25 @@ local function parse_admin_config(commit)
end
-- Attempt to parse the core ruleset.
- local ruleset, msg = rules.parse(flat_tree["core.rules"].obj.content,
- "gitano-admin:" .. commit.sha .. ":core.rules",
- true)
+ local coreruleset, msg = rules.parse(flat_tree["core.rules"].obj.content,
+ "gitano-admin:" .. commit.sha .. ":core.rules",
+ true)
- if not ruleset then
+ if not coreruleset then
return nil, msg
end
+ -- Attempt to parse the core ruleset.
+ local preruleset
+ if flat_tree["pre.rules"] then
+ preruleset, msg = rules.parse(flat_tree["pre.rules"].obj.content,
+ "gitano-admin:" .. commit.sha .. ":pre.rules",
+ true)
+ if not preruleset then
+ return nil, msg
+ end
+ end
+
-- Gather the users
local users = {}
for filename, obj in pairs(flat_tree) do
@@ -214,7 +229,8 @@ local function parse_admin_config(commit)
global = conf_globals,
users = users,
groups = groups,
- rules = ruleset,
+ rules = coreruleset,
+ prerules = preruleset,
}
end