depctrl global config: use depctrl's config handler
better than finding a file that's probably the config, parsing the json, and writing it back in, for obvious reasons turns out no i wasnt thinning out the soup too much twas just right Reason for adding values one by one in key-pair loop instead of just config = new_config: > [01:31] arch1t3cht: oh, I think you can't assign entire tables to DependencyControl.config.c > [01:31] arch1t3cht: like, you can't do DependencyControl.config.c = <my new config>, > you should do DependencyControl.config.myfield = <my new value> and whatnot > [01:32] arch1t3cht: because behind the scenes it uses metatable magic to track what field changes > so it can merge its own changes with ones that other scripts made in the meantime Co-Authored-By: arch1t3cht <arch1t3cht@gmail.com>
This commit is contained in:
parent
d8a867c9ec
commit
771a31da35
|
@ -1,15 +1,11 @@
|
|||
script_name="DepCtrl Global Config"
|
||||
script_description="the future is now"
|
||||
script_author = "garret"
|
||||
script_version = "1.2.0"
|
||||
script_version = "1.3.0"
|
||||
script_namespace = "garret.depctrl_config"
|
||||
|
||||
local DependencyControl = require("l0.DependencyControl")
|
||||
local depctrl = DependencyControl {
|
||||
--feed="TODO",
|
||||
{"json"}
|
||||
}
|
||||
local json = depctrl:requireModules()
|
||||
local depctrl = DependencyControl {}
|
||||
|
||||
local function get_bool(field, default) -- can't just do `field or default`, because the default might be true when field is false
|
||||
if field == nil then
|
||||
|
@ -63,7 +59,7 @@ local function get_human_filesize(bytes)
|
|||
end
|
||||
|
||||
local function get_config(config)
|
||||
local defaults = {updaterEnabled = true, updateInterval = 302400, traceLevel = 3, tryAllFeeds = false, dumpFeeds = true, configDir = "?user/config", logMaxFiles = 200, logMaxAge = 604800, logMaxSize = 10 * (10 ^ 6), updateWaitTimeout = 60, updateOrphanTimeout = 600, logDir = "?user/log", writeLogs = true}
|
||||
local defaults = DependencyControl.config.defaults
|
||||
local dialog = {
|
||||
{ class="checkbox", name="updaterEnabled",
|
||||
x=0,y=0,width=2,height=1,
|
||||
|
@ -144,7 +140,7 @@ local function get_config(config)
|
|||
if pressed == "Cancel" then
|
||||
aegisub.cancel()
|
||||
elseif pressed == "Reset" then
|
||||
return {}
|
||||
return {}
|
||||
end
|
||||
res.traceLevel = tonumber(res.traceLevel:sub(1, 1))
|
||||
res.updateInterval = human_to_seconds(res.updateInterval)
|
||||
|
@ -184,33 +180,23 @@ local function get_feeds(config)
|
|||
return config
|
||||
end
|
||||
|
||||
local function read_json(path)
|
||||
local file = io.open(path, "r")
|
||||
local json = json.decode(file:read())
|
||||
file:close()
|
||||
return json
|
||||
end
|
||||
|
||||
local function write_json(path, table)
|
||||
local json = json.encode(table)
|
||||
local file = io.open(path, "w")
|
||||
file:write(json)
|
||||
file:close()
|
||||
local function write_config(new)
|
||||
for k, v in pairs(new) do
|
||||
if (v == nil) -- allow nil, so the reset to defaults button works
|
||||
or v ~= (DependencyControl.config.c[k] or DependencyControl.config.defaults[k]) -- check it's not the current value anyway
|
||||
then
|
||||
-- changed, save
|
||||
DependencyControl.config.c[k] = v
|
||||
end
|
||||
end
|
||||
DependencyControl.config:write(true)
|
||||
aegisub.log(3, "Done. You'll need to rescan your automation directory or restart aegisub for the changes to take effect.")
|
||||
end
|
||||
|
||||
local function get_config_path()
|
||||
local path = depctrl:getConfigFileName()
|
||||
path = path:gsub(script_namespace, "l0.DependencyControl")
|
||||
aegisub.log(4, "config file: "..path.."\n")
|
||||
return path
|
||||
end
|
||||
|
||||
local function change_config(new) -- i think i might be thinning out the soup a bit too much
|
||||
local config_path = get_config_path()
|
||||
local data = read_json(config_path)
|
||||
data.config = new(data.config)
|
||||
write_json(config_path, data)
|
||||
local function change_config(modifier) -- i think i might be thinning out the soup a bit too much
|
||||
DependencyControl.config:load()
|
||||
local new_config = modifier(DependencyControl.config.c)
|
||||
write_config(new_config)
|
||||
end
|
||||
|
||||
local function global_config()
|
||||
|
|
Loading…
Reference in New Issue