summaryrefslogtreecommitdiff
path: root/xmake/core/project/project.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2020-05-14 22:36:12 +0800
committerruki <[email protected]>2020-05-14 09:37:17 +0800
commitf7ece67bf3f768f98b22818aa13afd65a00831d7 (patch)
treed974226c87da5721b9e3d013cbe1e13e0e24030f /xmake/core/project/project.lua
parent3d934a771f3a383f915d691ad3edb293aed58e4f (diff)
add set_policy api
Diffstat (limited to 'xmake/core/project/project.lua')
-rw-r--r--xmake/core/project/project.lua111
1 files changed, 63 insertions, 48 deletions
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua
index d931a3c3b..f7abb5de1 100644
--- a/xmake/core/project/project.lua
+++ b/xmake/core/project/project.lua
@@ -595,44 +595,10 @@ function project._load_packages()
return project._load_scope("package", true, false)
end
--- get interpreter
-function project.interpreter()
-
- -- the interpreter has been initialized? return it directly
- if project._INTERPRETER then
- return project._INTERPRETER
- end
-
- -- init interpreter
- local interp = interpreter.new()
- assert(interp)
-
- -- set root directory
- interp:rootdir_set(project.directory())
-
- -- set root scope
- interp:rootscope_set("target")
-
- -- define apis for rule
- interp:api_define(rule.apis())
-
- -- define apis for task
- interp:api_define(task.apis())
-
- -- define apis for target
- interp:api_define(target.apis())
-
- -- define apis for option
- interp:api_define(option.apis())
-
- -- define apis for package
- interp:api_define(package.apis())
+-- get project apis
+function project.apis()
- -- define apis for language
- interp:api_define(language.apis())
-
- -- define apis for project
- interp:api_define
+ return
{
values =
{
@@ -675,6 +641,46 @@ function project.interpreter()
, {"add_platformdirs", project._api_add_platformdirs }
}
}
+end
+
+-- get interpreter
+function project.interpreter()
+
+ -- the interpreter has been initialized? return it directly
+ if project._INTERPRETER then
+ return project._INTERPRETER
+ end
+
+ -- init interpreter
+ local interp = interpreter.new()
+ assert(interp)
+
+ -- set root directory
+ interp:rootdir_set(project.directory())
+
+ -- set root scope
+ interp:rootscope_set("target")
+
+ -- define apis for rule
+ interp:api_define(rule.apis())
+
+ -- define apis for task
+ interp:api_define(task.apis())
+
+ -- define apis for target
+ interp:api_define(target.apis())
+
+ -- define apis for option
+ interp:api_define(option.apis())
+
+ -- define apis for package
+ interp:api_define(package.apis())
+
+ -- define apis for language
+ interp:api_define(language.apis())
+
+ -- define apis for project
+ interp:api_define(project.apis())
-- register api: deprecated
deprecated_project.api_register(interp)
@@ -786,11 +792,31 @@ function project.get(name)
return project._INFO and project._INFO:get(name) or nil
end
+-- get the project name
+function project.name()
+ local name = project.get("project")
+ -- TODO multi project names? we only get the first name now.
+ -- and we need improve it in the future.
+ if type(name) == "table" then
+ name = name[1]
+ end
+ return name
+end
+
-- get the project version, the root version of the target scope
function project.version()
return project.get("target.version")
end
+-- get the project policy, the root policy of the target scope
+function project.policy(name)
+ local policies = project.get("target.policy")
+ if policies then
+ local value = policies[name]
+ return value and table.unwrap(value)
+ end
+end
+
-- clear project cache to reload targets and options
function project.clear()
@@ -941,17 +967,6 @@ function project.mtimes()
return project.interpreter():mtimes()
end
--- get the project name
-function project.name()
- local name = project.get("project")
- -- TODO multi project names? we only get the first name now.
- -- and we need improve it in the future.
- if type(name) == "table" then
- name = name[1]
- end
- return name
-end
-
-- get the project modes
function project.modes()
local modes = project.get("modes") or {}