update
This commit is contained in:
+18
-63
@@ -1,4 +1,3 @@
|
||||
local msg = require "mp.msg"
|
||||
local utils = require "mp.utils"
|
||||
local legacy = mp.command_native_async == nil
|
||||
local config = {}
|
||||
@@ -45,55 +44,22 @@ function apply_defaults(info)
|
||||
return info
|
||||
end
|
||||
|
||||
local function build_directory_string(dir, repo)
|
||||
local str = ""
|
||||
local contents = utils.readdir(dir)
|
||||
if not contents then return msg.error("could not access local repo:", repo) end
|
||||
for _, item in ipairs(contents) do
|
||||
local path = dir..'/'..item
|
||||
if utils.file_info(path).is_dir then
|
||||
if item ~= ".git" then str = str..'/'..build_directory_string(path, repo)..'\n' end
|
||||
else
|
||||
str = str..(path:sub(repo:len()+2))..'\n'
|
||||
end
|
||||
end
|
||||
return str
|
||||
end
|
||||
|
||||
local function get_file_list(info)
|
||||
if not info.local_repo then
|
||||
return run({"git", "-C", info.edist, "ls-tree", "-r", "--name-only", "remotes/manager/"..info.branch}).stdout
|
||||
else
|
||||
return build_directory_string(info.local_repo, info.local_repo)
|
||||
end
|
||||
end
|
||||
|
||||
function update(info)
|
||||
info = apply_defaults(info)
|
||||
if not info then return false end
|
||||
|
||||
local base = nil
|
||||
|
||||
info.edist = string.match(mp.command_native({"expand-path", info.dest}), "(.-)[/\\]?$")
|
||||
mkdir(info.edist)
|
||||
|
||||
|
||||
local e_dest = string.match(mp.command_native({"expand-path", info.dest}), "(.-)[/\\]?$")
|
||||
mkdir(e_dest)
|
||||
|
||||
local files = {}
|
||||
|
||||
if info.local_repo then
|
||||
info.local_repo = mp.command_native({"expand-path", info.local_repo})
|
||||
if not utils.file_info(info.local_repo) then
|
||||
info.local_repo = false
|
||||
msg.warn("local repo not found - falling back to git")
|
||||
end
|
||||
end
|
||||
|
||||
if not info.local_repo then
|
||||
run({"git", "-C", info.edist, "remote", "add", "manager", info.git})
|
||||
run({"git", "-C", info.edist, "remote", "set-url", "manager", info.git})
|
||||
run({"git", "-C", info.edist, "fetch", "manager", info.branch})
|
||||
end
|
||||
|
||||
for file in string.gmatch(get_file_list(info), "[^\r\n]+") do
|
||||
|
||||
run({"git", "-C", e_dest, "remote", "add", "manager", info.git})
|
||||
run({"git", "-C", e_dest, "remote", "set-url", "manager", info.git})
|
||||
run({"git", "-C", e_dest, "fetch", "manager", info.branch})
|
||||
|
||||
for file in string.gmatch(run({"git", "-C", e_dest, "ls-tree", "-r", "--name-only", "remotes/manager/"..info.branch}).stdout, "[^\r\n]+") do
|
||||
local l_file = string.lower(file)
|
||||
if info.whitelist == "" or match(l_file, info.whitelist) then
|
||||
if info.blacklist == "" or not match(l_file, info.blacklist) then
|
||||
@@ -107,29 +73,20 @@ function update(info)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if base == nil then return false end
|
||||
|
||||
|
||||
if base ~= "" then base = base.."/" end
|
||||
|
||||
|
||||
if next(files) == nil then
|
||||
print("no files matching patterns")
|
||||
else
|
||||
for _, file in ipairs(files) do
|
||||
local based = string.sub(file, string.len(base)+1)
|
||||
local p_based = parent(based)
|
||||
if p_based and not info.flatten_folders then mkdir(info.edist.."/"..p_based) end
|
||||
|
||||
local c = ""
|
||||
if info.local_repo then
|
||||
local source = io.open(info.local_repo..'/'..file)
|
||||
c = source:read("*a")
|
||||
source:close()
|
||||
else
|
||||
c = string.match(run({"git", "-C", info.edist, "--no-pager", "show", "remotes/manager/"..info.branch..":"..file}).stdout, "(.-)[\r\n]?$")
|
||||
end
|
||||
|
||||
local f = io.open(info.edist.."/"..(info.flatten_folders and file:match("[^/]+$") or based), "w")
|
||||
if p_based and not info.flatten_folders then mkdir(e_dest.."/"..p_based) end
|
||||
local c = string.match(run({"git", "-C", e_dest, "--no-pager", "show", "remotes/manager/"..info.branch..":"..file}).stdout, "(.-)[\r\n]?$")
|
||||
local f = io.open(e_dest.."/"..(info.flatten_folders and file:match("[^/]+$") or based), "w")
|
||||
f:write(c)
|
||||
f:close()
|
||||
end
|
||||
@@ -150,10 +107,8 @@ function update_all()
|
||||
end
|
||||
|
||||
for i, info in ipairs(config) do
|
||||
print("updating", (info.git:match("([^/]+)%.git$") or info.git).."...")
|
||||
if not update(info) then msg.error("FAILED") end
|
||||
print("update"..i, update(info))
|
||||
end
|
||||
print("all files updated")
|
||||
end
|
||||
|
||||
mp.add_key_binding(nil, "manager-update-all", update_all)
|
||||
mp.add_key_binding(nil, "manager-update-all", update_all)
|
||||
@@ -754,7 +754,7 @@ fallback_server
|
||||
想要使用此选项,请在mpv配置文件夹下的 `script-opts`中创建 `uosc_danmaku.conf`文件并自定义如下内容:
|
||||
|
||||
```
|
||||
fallback_server= https://api.danmu.icu
|
||||
fallback_server=https://api.danmu.icu
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
Reference in New Issue
Block a user