summaryrefslogtreecommitdiff
path: root/xmake/core/project/rule.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2018-04-10 21:01:46 +0800
committerruki <[email protected]>2018-04-10 00:10:39 +0800
commit483f101b3fe1502ce4daca8d47058dba4cd27dee (patch)
tree80b24ac81f7b0badf744489c000defe609b09c16 /xmake/core/project/rule.lua
parentc59a2f071f53f88516bb487e5bcef37d027ecc43 (diff)
seperate project and global rules
Diffstat (limited to 'xmake/core/project/rule.lua')
-rw-r--r--xmake/core/project/rule.lua35
1 files changed, 14 insertions, 21 deletions
diff --git a/xmake/core/project/rule.lua b/xmake/core/project/rule.lua
index f915ca459..34d9bc843 100644
--- a/xmake/core/project/rule.lua
+++ b/xmake/core/project/rule.lua
@@ -30,7 +30,6 @@ local os = require("base/os")
local path = require("base/path")
local utils = require("base/utils")
local table = require("base/table")
-local project = require("project/project")
local global = require("base/global")
local interpreter = require("base/interpreter")
local config = require("project/config")
@@ -42,8 +41,7 @@ local sandbox_module = require("sandbox/modules/import/core/sandbox/module")
function rule._directories()
-- the directories
- return { path.join(config.directory(), "rules")
- , path.join(global.directory(), "rules")
+ return { path.join(global.directory(), "rules")
, path.join(os.programdir(), "rules")
}
end
@@ -348,7 +346,12 @@ function rule:script(name, generic)
return result
end
--- get all rules
+-- get the given global rule
+function rule.rule(name)
+ return rule.rules()[name]
+end
+
+-- get global rules
function rule.rules()
-- return it directly if exists
@@ -373,33 +376,23 @@ function rule.rules()
if results then
table.join2(rules, results)
else
- return nil, errors
+ os.raise(errors)
end
end
end
end
- -- merge project rules if exists
- local project_rules, errors = project.rules()
- if project_rules then
-
- -- save rules
- for rulename, ruleinfo in pairs(project_rules) do
- if rules[rulename] == nil then
- rules[rulename] = ruleinfo
- else
- utils.warning("rule(\"%s\") has been defined!", rulename)
- end
- end
- else
- return nil, errors
+ -- make rule instances
+ local instances = {}
+ for rulename, ruleinfo in pairs(rules) do
+ instances[rulename] = rule.new(rulename, ruleinfo)
end
-- save it
- rule._RULES = rules
+ rule._RULES = instances
-- ok?
- return rules
+ return rule._RULES
end
-- return module