mirror of
https://github.com/octoleo/lsyncd.git
synced 2024-05-31 15:30:51 +00:00
This commit is contained in:
parent
e53f7cc61f
commit
6afaafaf5a
121
examples/limagemagic.lua
Normal file
121
examples/limagemagic.lua
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
----
|
||||||
|
-- Auto "magic" image converter directory.
|
||||||
|
--
|
||||||
|
-- This lsycnd script will automatically convert all images that are placed
|
||||||
|
-- in the directory 'magicdir' all resulting images are placed in the same
|
||||||
|
-- directory!
|
||||||
|
--
|
||||||
|
-- Be sure to mkdir 'magicdir' first.
|
||||||
|
--
|
||||||
|
-- Fileformats: .jpg .gif .png
|
||||||
|
|
||||||
|
local formats = { jpg=true, gif=true, png=true, }
|
||||||
|
|
||||||
|
convert = {
|
||||||
|
delay = 0,
|
||||||
|
|
||||||
|
maxProcesses = 99,
|
||||||
|
|
||||||
|
action = function(inlet)
|
||||||
|
local event = inlet.getEvent()
|
||||||
|
|
||||||
|
if event.isdir then
|
||||||
|
-- ignores events on dirs
|
||||||
|
inlet.discardEvent(event)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- extract extension and basefilename
|
||||||
|
local p = event.pathname
|
||||||
|
local ext = string.match(p, ".*%.([^.]+)$")
|
||||||
|
local base = string.match(p, "(.*)%.[^.]+$")
|
||||||
|
if not formats[ext] then
|
||||||
|
-- an unknown extenion
|
||||||
|
log("Normal", "not doing something on ."..ext)
|
||||||
|
inlet.discardEvent(event)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- autoconvert on create and modify
|
||||||
|
if event.etype == "Create" or event.etype == "Modify" then
|
||||||
|
-- builds one bash command
|
||||||
|
local cmd = ""
|
||||||
|
-- do for all other extensions
|
||||||
|
for k, _ in pairs(formats) do
|
||||||
|
if k ~= ext then
|
||||||
|
-- excludes files to be created, so no
|
||||||
|
-- followup actions will occur
|
||||||
|
inlet.addExclude(base..'.'..k)
|
||||||
|
if cmd ~= "" then
|
||||||
|
cmd = cmd .. " && "
|
||||||
|
end
|
||||||
|
cmd = cmd..
|
||||||
|
'/usr/bin/convert "'..
|
||||||
|
event.source..p..'" "'..
|
||||||
|
event.source..base..'.'..k..
|
||||||
|
'" || /bin/true'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
log("Normal", "Converting "..p)
|
||||||
|
spawnShell(event, cmd)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- deletes all formats if you delete one
|
||||||
|
local p = event.pathname
|
||||||
|
local ext = string.match(p, ".*%.([^.]+)$")
|
||||||
|
local base = string.match(p, "(.*)%.[^.]+$")
|
||||||
|
if event.etype == "Delete" then
|
||||||
|
-- builds one bash command
|
||||||
|
local cmd = ""
|
||||||
|
-- do for all other extensions
|
||||||
|
for k, _ in pairs(formats) do
|
||||||
|
if k ~= ext then
|
||||||
|
-- excludes files to be created, so no
|
||||||
|
-- followup actions will occur
|
||||||
|
inlet.addExclude(base..'.'..k)
|
||||||
|
if cmd ~= "" then
|
||||||
|
cmd = cmd .. " && "
|
||||||
|
end
|
||||||
|
cmd = cmd..
|
||||||
|
'rm "'..event.source..base..'.'..k..
|
||||||
|
'" || /bin/true'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
log("Normal", "Deleting all "..p)
|
||||||
|
spawnShell(event, cmd)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ignores other events.
|
||||||
|
inlet.discardEvent(event)
|
||||||
|
end,
|
||||||
|
|
||||||
|
-----
|
||||||
|
-- Removes excludes when convertions are finished
|
||||||
|
--
|
||||||
|
collect = function(event, exitcode)
|
||||||
|
local p = event.pathname
|
||||||
|
local ext = string.match(p, ".*%.([^.]+)$")
|
||||||
|
local base = string.match(p, "(.*)%.[^.]+$")
|
||||||
|
local inlet = event.inlet
|
||||||
|
|
||||||
|
if event.etype == "Create" or
|
||||||
|
event.etype == "Modify" or
|
||||||
|
event.etype == "Delete"
|
||||||
|
then
|
||||||
|
for k, _ in pairs(formats) do
|
||||||
|
inlet.rmExclude(base..'.'..k)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
-----
|
||||||
|
-- Does not collapse anything
|
||||||
|
collapse = function()
|
||||||
|
return 3
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
sync{convert, source="magicdir", recursive=false}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user