47 lines
1012 B
Lua
47 lines
1012 B
Lua
#@
|
|
-- Path of Building
|
|
--
|
|
-- Module: Update Apply
|
|
-- Applies updates.
|
|
--
|
|
local opFileName = ...
|
|
|
|
print("Applying update...")
|
|
local opFile = io.open(opFileName, "r")
|
|
if not opFile then
|
|
print("No operations list present.\n")
|
|
return
|
|
end
|
|
local lines = { }
|
|
for line in opFile:lines() do
|
|
table.insert(lines, line)
|
|
end
|
|
opFile:close()
|
|
os.remove(opFileName)
|
|
for _, line in ipairs(lines) do
|
|
local op, args = line:match("(%a+) ?(.*)")
|
|
if op == "move" then
|
|
local src, dst = args:match('"(.*)" "(.*)"')
|
|
print("Updating '"..dst.."'")
|
|
local srcFile = io.open(src, "rb")
|
|
assert(srcFile, "couldn't open "..src)
|
|
local dstFile
|
|
while not dstFile do
|
|
dstFile = io.open(dst, "w+b")
|
|
end
|
|
if dstFile then
|
|
dstFile:write(srcFile:read("*a"))
|
|
dstFile:close()
|
|
end
|
|
srcFile:close()
|
|
os.remove(src)
|
|
elseif op == "delete" then
|
|
local file = args:match('"(.*)"')
|
|
print("Deleting '"..file.."'")
|
|
os.remove(file)
|
|
elseif op == "start" then
|
|
local target = args:match('"(.*)"')
|
|
SpawnProcess(target)
|
|
end
|
|
end
|