{% if not cfg.lua.policy_script_only %}

-- FFI library
ffi = require('ffi')
local C = ffi.C

-- logging.level
{% if cfg.logging.groups and "policy-loader" in cfg.logging.groups %}
log_level('debug')
{% else %}
log_level('{{ cfg.logging.level }}')
{% endif %}

{% if cfg.logging.target -%}
-- logging.target
log_target('{{ cfg.logging.target }}')
{%- endif %}

{% if cfg.logging.groups %}
-- logging.groups
log_groups({
{% for g in cfg.logging.groups %}
{% if g not in [
    "manager", "supervisord", "policy-loader", "kresd", "cache-gc",
    "files", "metrics", "server",
] %}
    '{{ g }}',
{% endif %}
{% endfor %}
})
{% endif %}

-- Config required for the cache opening
cache.open({{ cfg.cache.size_max.bytes() }}, 'lmdb://{{ cfg.cache.storage }}')

-- VIEWS section ------------------------------------
{% include "views.lua.j2" %}

-- LOCAL-DATA section -------------------------------
{% include "local_data.lua.j2" %}

-- FORWARD section ----------------------------------
{% include "forward.lua.j2" %}

-- DEFER section ------------------------------------
-- Force-disable defer to avoid the default defer config.
{% set disable_defer = true %}
{% include "defer.lua.j2" %}

{% endif %}

-- LUA section --------------------------------------
-- Custom Lua code cannot be validated

{% if cfg.lua.policy_script_file %}
{% import cfg.lua.policy_script_file as policy_script_file %}
{{ policy_script_file }}
{% endif %}

{% if cfg.lua.policy_script %}
{{ cfg.lua.policy_script }}
{% endif %}


-- exit policy-loader properly
quit()
