diff options
| author | ruki <[email protected]> | 2022-05-28 23:31:23 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-05-28 23:31:23 +0800 |
| commit | fdc84716dd3796c9b1497a01223cff436a72fba3 (patch) | |
| tree | 3b22a8f7d4f5e852834c636680293540dde358e3 /xmake/core/project/project.lua | |
| parent | 5d70ef54c67908120159570254d2c194bb6c6f75 (diff) | |
add policies config
Diffstat (limited to 'xmake/core/project/project.lua')
| -rw-r--r-- | xmake/core/project/project.lua | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua index c40cfbac0..9a80da1aa 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -31,6 +31,7 @@ local table = require("base/table") local global = require("base/global") local process = require("base/process") local hashset = require("base/hashset") +local baseoption = require("base/option") local deprecated = require("base/deprecated") local interpreter = require("base/interpreter") local memcache = require("cache/memcache") @@ -908,7 +909,23 @@ end function project.policy(name) local policies = project._memcache():get("policies") if not policies then + -- get policies from project, e.g. set_policy("xxx", true) policies = project.get("target.policy") + -- get policies from config, e.g. xmake f --policies=package.precompiled:n,package.install_only + -- @see https://github.com/xmake-io/xmake/issues/2318 + local policies_config = config.get("policies") + if policies_config then + for _, policy in ipairs(policies_config:split(",", {plain = true})) do + local splitinfo = policy:split(":", {limit = 2}) + if #splitinfo > 1 then + policies = policies or {} + policies[splitinfo[1]] = baseoption.boolean(splitinfo[2]) + else + policies = policies or {} + policies[splitinfo[1]] = true + end + end + end project._memcache():set("policies", policies) if policies then local defined_policies = policy.policies() |
