summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2026-02-02 14:14:28 -0800
committerDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2026-02-02 14:14:28 -0800
commit61dba9967975d4a48d33776449c627c11f9bd365 (patch)
tree7a8f04177e8775e97b6ec323e5436cba777bcecf
parent38c20d9a76e69087d3d1fe06335d8b3dc8571295 (diff)
downloadmpv-iptv-menu-61dba9967975d4a48d33776449c627c11f9bd365.tar.gz
mpv-iptv-menu-61dba9967975d4a48d33776449c627c11f9bd365.tar.xz
support config overrides
-rw-r--r--config.lua8
-rw-r--r--util.lua30
2 files changed, 38 insertions, 0 deletions
diff --git a/config.lua b/config.lua
index e4a9c82..6708d83 100644
--- a/config.lua
+++ b/config.lua
@@ -1,5 +1,8 @@
-- Copyright 2025 David Vazgenovich Shakaryan
+local util = require('util')
+
+local mp_options = require('mp.options')
local mp_utils = require('mp.utils')
local config = {}
@@ -68,4 +71,9 @@ config.cache_dir = mp_utils.join_path(script_dir, 'cache')
config.img_dir = mp_utils.join_path(script_dir, 'img')
config.favourites_file = mp_utils.join_path(script_dir, 'favourites.json')
+-- flatten keys into `foo.bar.baz' form for script-opt overrides
+local opts = util.flatten_table(config)
+mp_options.read_options(opts)
+util.unflatten_table(opts, config)
+
return config
diff --git a/util.lua b/util.lua
index 99bba7b..d678a9e 100644
--- a/util.lua
+++ b/util.lua
@@ -125,6 +125,36 @@ function util.stable_kmerge(t, u, k)
return res
end
+function util.flatten_table(src, dst, prefix)
+ local dst = dst or {}
+ for k, v in pairs(src) do
+ local k = prefix and prefix .. '.' .. k or k
+ if type(v) == 'table' then
+ util.flatten_table(v, dst, k)
+ else
+ dst[k] = v
+ end
+ end
+ return dst
+end
+
+function util.unflatten_table(src, dst)
+ local dst = dst or {}
+ for k, v in pairs(src) do
+ local t = dst
+ local prev
+ for curr in (k .. '.'):gmatch('(.-)%.') do
+ if prev then
+ t[prev] = t[prev] or {}
+ t = t[prev]
+ end
+ prev = curr
+ end
+ t[prev] = v
+ end
+ return dst
+end
+
function util.str_seek_prev_char(str, pos)
return util.utf8_seek(str, pos, -1)
end