From 2799724a1683023f9eaa618127af9d07c0c46f23 Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Mon, 28 Dec 2009 16:46:05 +0000 Subject: Added ability to manage roles based on which roles file they're in = more granularity of roles. --- lib/roles.lua | 69 ++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 24 deletions(-) (limited to 'lib') diff --git a/lib/roles.lua b/lib/roles.lua index 2bceb01..0366a30 100644 --- a/lib/roles.lua +++ b/lib/roles.lua @@ -89,14 +89,29 @@ list_default_roles = function(self) for x,file in ipairs(rolesfiles) do f = fs.read_file_as_array(file) or {} + local rolefile = string.match(file, "(/[^/]+/[^/]+)%.roles$") for y,line in pairs(f) do - if not reverseroles[string.match(line,"^[%w_]+")] then - default_roles[#default_roles+1] = string.match(line,"^[%w_]+") - reverseroles[default_roles[#default_roles]] = #default_roles + local role = string.match(line,"^[%w_]+") + if role then + if not reverseroles[rolefile.."/"..role] then + default_roles[#default_roles+1] = rolefile.."/"..role + reverseroles[default_roles[#default_roles]] = #default_roles + end + if not reverseroles[role] then + default_roles[#default_roles+1] = role + reverseroles[default_roles[#default_roles]] = #default_roles + end end end end + table.sort(default_roles, function(a,b) + if string.byte(a, 1) == 47 and string.byte(b,1) ~= 47 then return false + elseif string.byte(a, 1) ~= 47 and string.byte(b,1) == 47 then return true + else return a