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í.

Translations