depctrl global config: add extra feeds support

This commit is contained in:
garret 2022-11-24 00:18:32 +00:00
parent c3454654c5
commit 2ec8caee58
1 changed files with 39 additions and 2 deletions

View File

@ -1,7 +1,7 @@
script_name="DepCtrl Global Config" script_name="DepCtrl Global Config"
script_description="the future is now" script_description="the future is now"
script_author = "garret" script_author = "garret"
script_version = "1.1.0" script_version = "1.2.0"
script_namespace = "garret.depctrl_config" script_namespace = "garret.depctrl_config"
local DependencyControl = require("l0.DependencyControl") local DependencyControl = require("l0.DependencyControl")
@ -63,7 +63,7 @@ local function get_human_filesize(bytes)
end end
local function get_config(config) local function get_config(config)
local defaults = {updaterEnabled = true, updateInterval = 302400, traceLevel = 3, extraFeeds = { }, 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 = {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 dialog = { local dialog = {
{ class="checkbox", name="updaterEnabled", { class="checkbox", name="updaterEnabled",
x=0,y=0,width=2,height=1, x=0,y=0,width=2,height=1,
@ -149,9 +149,41 @@ local function get_config(config)
res.traceLevel = tonumber(res.traceLevel:sub(1, 1)) res.traceLevel = tonumber(res.traceLevel:sub(1, 1))
res.updateInterval = human_to_seconds(res.updateInterval) res.updateInterval = human_to_seconds(res.updateInterval)
res.logMaxAge = human_to_seconds(res.logMaxAge) res.logMaxAge = human_to_seconds(res.logMaxAge)
res.extraFeeds = config.extraFeeds
return res return res
end end
local function split_by_newline(list)
local strs = {}
for i in list:gmatch("[^\n]+") do
table.insert(strs, i)
end
return strs
end
local function get_feeds(config)
local extraFeeds = config.extraFeeds or {}
local feed_edit_string = table.concat(extraFeeds, "\n") or ""
local dialog = {
{ class="label",
x=0,y=0,width=1,height=1,
label = "Extra Feeds:",
},
{ class="textbox", name = "feeds",
x=0,y=1,width=20,height=15,
text = feed_edit_string
},
}
local pressed, res = aegisub.dialog.display(dialog)
if not pressed then aegisub.cancel() end
config.extraFeeds = split_by_newline(res.feeds)
return config
end
local function read_json(path) local function read_json(path)
local file = io.open(path, "r") local file = io.open(path, "r")
local json = json.decode(file:read()) local json = json.decode(file:read())
@ -185,4 +217,9 @@ local function global_config()
change_config(get_config) change_config(get_config)
end end
local function extra_feeds()
change_config(get_feeds)
end
depctrl:registerMacro("DependencyControl/Global Configuration", "Lets you change DependencyControl settings.", global_config) depctrl:registerMacro("DependencyControl/Global Configuration", "Lets you change DependencyControl settings.", global_config)
depctrl:registerMacro("DependencyControl/Extra Feeds", "Lets you provide additional update feeds.", extra_feeds)