mirror of
https://github.com/octoleo/lsyncd.git
synced 2025-01-05 16:12:32 +00:00
lifting some inline funcs
This commit is contained in:
parent
83c6436e84
commit
7bae036f03
@ -105,6 +105,61 @@ rsync.checkgauge = {
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
-- Returns true for non Init and Blanket events.
|
||||
--
|
||||
local eventNotInitBlank =
|
||||
function
|
||||
(
|
||||
event
|
||||
)
|
||||
return event.etype ~= 'Init' and event.etype ~= 'Blanket'
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- Replaces what rsync would consider filter rules by literals.
|
||||
--
|
||||
local replaceRsyncFilter =
|
||||
function
|
||||
(
|
||||
path
|
||||
)
|
||||
if not path
|
||||
then
|
||||
return
|
||||
end
|
||||
|
||||
return(
|
||||
path
|
||||
:gsub( '%?', '\\?' )
|
||||
:gsub( '%*', '\\*' )
|
||||
:gsub( '%[', '\\[' )
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- Mutates paths for rsync filter rules,
|
||||
-- changes deletes to multi path patterns
|
||||
--
|
||||
local pathMutator =
|
||||
function
|
||||
(
|
||||
etype,
|
||||
path1,
|
||||
path2
|
||||
)
|
||||
if string.byte( path1, -1 ) == 47
|
||||
and etype == 'Delete'
|
||||
then
|
||||
return replaceRsyncFilter( path1 ) .. '***', replaceRsyncFilter( path2 )
|
||||
else
|
||||
return replaceRsyncFilter( path1 ), replaceRsyncFilter( path2 )
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- Spawns rsync for a list of events
|
||||
--
|
||||
@ -115,71 +170,20 @@ rsync.action = function
|
||||
(
|
||||
inlet
|
||||
)
|
||||
--
|
||||
-- gets all events ready for syncing
|
||||
--
|
||||
local elist = inlet.getEvents(
|
||||
function
|
||||
(
|
||||
event
|
||||
)
|
||||
return event.etype ~= 'Init' and event.etype ~= 'Blanket'
|
||||
end
|
||||
)
|
||||
local elist = inlet.getEvents( eventNotInitBlank )
|
||||
|
||||
--
|
||||
-- Replaces what rsync would consider filter rules by literals
|
||||
--
|
||||
local function sub
|
||||
(
|
||||
p
|
||||
)
|
||||
if not p
|
||||
then
|
||||
return
|
||||
end
|
||||
-- gets the list of paths for the event list
|
||||
-- deletes create multi match patterns
|
||||
local paths = elist.getPaths( pathMutator )
|
||||
|
||||
return p:
|
||||
gsub( '%?', '\\?' ):
|
||||
gsub( '%*', '\\*' ):
|
||||
gsub( '%[', '\\[' )
|
||||
end
|
||||
|
||||
--
|
||||
-- Gets the list of paths for the event list
|
||||
--
|
||||
-- Deletes create multi match patterns
|
||||
--
|
||||
local paths = elist.getPaths(
|
||||
function
|
||||
(
|
||||
etype,
|
||||
path1,
|
||||
path2
|
||||
)
|
||||
if string.byte( path1, -1 ) == 47
|
||||
and etype == 'Delete'
|
||||
then
|
||||
return sub( path1 )..'***', sub( path2 )
|
||||
else
|
||||
return sub( path1 ), sub( path2 )
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
--
|
||||
-- stores all filters by integer index
|
||||
--
|
||||
local filterI = { }
|
||||
|
||||
--
|
||||
-- Stores all filters with path index
|
||||
--
|
||||
-- stores all filters with path index
|
||||
local filterP = { }
|
||||
|
||||
--
|
||||
-- Adds one path to the filter
|
||||
--
|
||||
-- adds one path to the filter
|
||||
local function addToFilter
|
||||
(
|
||||
path
|
||||
@ -205,19 +209,20 @@ rsync.action = function
|
||||
do
|
||||
if path and path ~= ''
|
||||
then
|
||||
addToFilter(path)
|
||||
addToFilter( path )
|
||||
|
||||
local pp = string.match( path, '^(.*/)[^/]+/?' )
|
||||
|
||||
while pp
|
||||
do
|
||||
addToFilter(pp)
|
||||
addToFilter( pp )
|
||||
pp = string.match( pp, '^(.*/)[^/]+/?' )
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local filterS = table.concat( filterI, '\n' )
|
||||
local filterS = table.concat( filterI, '\n' )
|
||||
|
||||
local filter0 = table.concat( filterI, '\000' )
|
||||
|
||||
log(
|
||||
@ -250,7 +255,6 @@ rsync.action = function
|
||||
config.source,
|
||||
config.target
|
||||
)
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
@ -246,15 +246,19 @@ rsyncssh.collect = function
|
||||
|
||||
if rc == 'ok'
|
||||
then
|
||||
log('Normal', 'Startup of "',agent.source,'" finished: ', exitcode)
|
||||
log('Normal', 'Startup of "', agent.source, '" finished: ', exitcode)
|
||||
elseif rc == 'again'
|
||||
then
|
||||
if settings('insist')
|
||||
then
|
||||
log( 'Normal', 'Retrying startup of "',agent.source,'": ', exitcode )
|
||||
log( 'Normal', 'Retrying startup of "', agent.source, '": ', exitcode )
|
||||
else
|
||||
log( 'Error', 'Temporary or permanent failure on startup of "',
|
||||
agent.source, '". Terminating since "insist" is not set.' );
|
||||
log(
|
||||
'Error',
|
||||
'Temporary or permanent failure on startup of "',
|
||||
agent.source, '". Terminating since "insist" is not set.'
|
||||
)
|
||||
|
||||
terminate( -1 ) -- ERRNO
|
||||
end
|
||||
elseif rc == 'die'
|
||||
@ -293,13 +297,13 @@ rsyncssh.collect = function
|
||||
|
||||
if rc == 'ok'
|
||||
then
|
||||
log( 'Normal', 'Finished ',agent.etype,' ',agent.sourcePath,': ',exitcode )
|
||||
log( 'Normal', 'Finished ', agent.etype,' ', agent.sourcePath, ': ', exitcode )
|
||||
elseif rc == 'again'
|
||||
then
|
||||
log( 'Normal', 'Retrying ',agent.etype,' ',agent.sourcePath,': ',exitcode )
|
||||
log( 'Normal', 'Retrying ', agent.etype, ' ', agent.sourcePath, ': ', exitcode )
|
||||
elseif rc == 'die'
|
||||
then
|
||||
log( 'Normal', 'Failure ',agent.etype,' ',agent.sourcePath,': ',exitcode )
|
||||
log( 'Normal', 'Failure ', agent.etype, ' ', agent.sourcePath, ': ', exitcode )
|
||||
else
|
||||
log( 'Error', 'Unknown exitcode ',agent.etype,' ',agent.sourcePath,': ',exitcode )
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user