compartir scripts
Hasta ahora, todo nuestro código lua ha estado en luarc. Esa es una buena forma de desarrollar su guión, pero no es muy práctica para la distribución. Necesitamos convertir esto en un módulo lua adecuado. Para hacer eso, guardamos el código en un archivo separado (scp-storage.lua
en este caso):
--[[
SCP STORAGE
a simple storage to export images via scp
AUTHOR
Jérémy Rosen (jeremy.rosen@enst-bretagne.fr)
INSTALLATION
* copy this file in $CONFIGDIR/lua/ where CONFIGDIR
is your darktable configuration directory
* add the following line in the file $CONFIGDIR/luarc
require "scp-storage"
USAGE
* select "Export via SCP" in the storage selection menu
* set the target directory
* export your images
LICENSE
GPLv2
]]
darktable = require "darktable"
darktable.configuration.check_version(...,{2,0,0})
local scp_path = darktable.new_widget("entry"){
tooltip ="Complete path to copy to. Can include user and hostname",
text = "",
reset_callback = function(self) self.text = "" end
}
darktable.register_storage("scp_export","Export via scp",
function( storage, image, format, filename,
number, total, high_quality, extra_data)
if coroutine.yield("RUN_COMMAND","scp "..filename.." "..
scp_path.text
) then
darktable.print_error("scp failed for "..tostring(image))
end
end,
nil, --finalize
nil, --supported
nil, --initialize
darktable.new_widget("box") {
orientation ="horizontal",
darktable.new_widget("label"){label = "target SCP PATH "},
scp_path,
})
darktable buscará scripts (siguiendo las reglas normales de lua) en los directorios estándar más $CONFIGDIR/lua/*.lua
. Así que nuestro script puede ser llamado simplemente agregando require "scp-storage"
en el archivo luarc. Un par de notas extra …
-
La función
darktable.configuration.check_version
comprobará la compatibilidad por usted. El “...
” se convertirá en el nombre de su secuencia de comandos y{2,0,0}
es la versión de API con la que ha probado su secuencia de comandos. Puede agregar varias versiones de API si actualiza su secuencia de comandos para varias versiones de darktable. -
Asegúrese de declarar todas sus funciones como
local
para no contaminar el espacio de nombres general. -
Asegúrese de no dejar impresiones de depuración en su código –
darktable.print_error
en particular le permite dejar impresiones de depuración en su código final sin molestar la consola. -
Puede elegir cualquier licencia para su script, pero los scripts que se cargan en el sitio web de darktable deben ser GPLv2.
Una vez que haya completado todos los campos, verificado su código, puede subirlo a nuestra página de script aquí.