ZSync now also synchronize document settings

This should implement #628.
pull/691/head
chrox 10 years ago
parent a3a4e7f7fb
commit 4a3ecf59b4

@ -14,6 +14,7 @@ local UIManager = require("ui/uimanager")
local Screen = require("ui/screen") local Screen = require("ui/screen")
local Event = require("ui/event") local Event = require("ui/event")
local Font = require("ui/font") local Font = require("ui/font")
local ltn12 = require("ltn12")
local DEBUG = require("dbg") local DEBUG = require("dbg")
local _ = require("gettext") local _ = require("gettext")
local util = require("ffi/util") local util = require("ffi/util")
@ -158,33 +159,57 @@ local function mklink(path, filename)
end end
end end
function ZSync:getOutboxes(files) -- add directory directly into outboxes
lfs.mkdir(self.outbox) function ZSync:outboxesAddDirectory(outboxes, dir)
clearDirectory(self.outbox) if lfs.attributes(dir, "mode") == "directory" then
local outboxes = {} local basename = dir:match(".*/(.*)") or dir
for _, filename in ipairs(files) do table.insert(outboxes, {
local mode = lfs.attributes(filename, "mode") path = dir,
if mode == "file" then alias = "/"..basename,
mklink(self.outbox, filename) })
elseif mode == "directory" then end
local basename = filename:match(".*/(.*)") or filename end
table.insert(outboxes, {
path = filename, -- link file in root outbox
alias = "/" .. basename, function ZSync:outboxAddFileLink(filename)
}) local mode = lfs.attributes(filename, "mode")
if mode == "file" then
mklink(self.outbox, filename)
end
end
-- copy directory content into root outbox(no recursively)
function ZSync:outboxCopyDirectory(dir)
local basename = dir:match(".*/(.*)") or dir
local newdir = self.outbox.."/"..basename
lfs.mkdir(newdir)
if pcall(lfs.dir, dir) then
for f in lfs.dir(dir) do
local filename = dir.."/"..f
if lfs.attributes(filename, "mode") == "file" then
local newfile = newdir.."/"..f
ltn12.pump.all(
ltn12.source.file(assert(io.open(filename, "rb"))),
ltn12.sink.file(assert(io.open(newfile, "wb")))
)
end
end end
end end
table.insert(outboxes, {
path = self.outbox,
alias = "/",
})
return outboxes
end end
function ZSync:publish() function ZSync:publish()
DEBUG("publish document", self.view.document.file) DEBUG("publish document", self.view.document.file)
lfs.mkdir(self.outbox)
clearDirectory(self.outbox)
local file = self.view.document.file local file = self.view.document.file
local outboxes = self:getOutboxes({file}) local sidecar = file:match("(.*)%.")..".sdr"
self:outboxAddFileLink(file)
self:outboxCopyDirectory(sidecar)
local outboxes = {}
table.insert(outboxes, {
path = self.outbox,
alias = "/",
})
-- init filemq first to get filemq port -- init filemq first to get filemq port
self:initServerFileMQ(outboxes) self:initServerFileMQ(outboxes)
self:initServerZyreMQ() self:initServerZyreMQ()

Loading…
Cancel
Save