2020-04-29 17:13:38 +02:00
|
|
|
local lib = {
|
2020-05-10 23:09:12 +02:00
|
|
|
scan(obj)::
|
2020-04-28 23:40:45 +02:00
|
|
|
local aux(old, key) =
|
|
|
|
|
if std.startsWith(key, '#') then
|
2020-05-10 23:09:12 +02:00
|
|
|
true
|
|
|
|
|
else if std.isObject(obj[key]) then
|
|
|
|
|
old || $.scan(obj[key])
|
2020-04-28 23:40:45 +02:00
|
|
|
else old;
|
2020-05-10 23:09:12 +02:00
|
|
|
std.foldl(aux, std.objectFieldsAll(obj), false),
|
2020-04-28 23:40:45 +02:00
|
|
|
|
2020-05-10 23:09:12 +02:00
|
|
|
load(pkg)::
|
|
|
|
|
local aux(old, key) =
|
|
|
|
|
if !std.isObject(pkg[key]) then
|
|
|
|
|
old
|
2020-05-12 22:48:02 +02:00
|
|
|
else if std.objectHasAll(pkg, '#' + key) && pkg['#' + key] == 'ignore' then
|
|
|
|
|
old
|
2020-05-10 23:09:12 +02:00
|
|
|
else if std.startsWith(key, '#') then
|
|
|
|
|
old { [key]: pkg[key] }
|
|
|
|
|
else if self.scan(pkg[key]) then
|
|
|
|
|
old { [key]: $.load(pkg[key]) }
|
|
|
|
|
else old;
|
2020-04-28 23:40:45 +02:00
|
|
|
|
2020-05-10 23:09:12 +02:00
|
|
|
std.foldl(aux, std.objectFieldsAll(pkg), {}),
|
2020-04-29 17:13:38 +02:00
|
|
|
};
|
|
|
|
|
|
2020-05-12 22:48:02 +02:00
|
|
|
|
2020-05-10 23:09:12 +02:00
|
|
|
lib.load(std.extVar('main'))
|