scripts delen

Tot nu toe staat al onze lua-code in luarc. Dat is een goede manier om jou script te ontwikkelen, maar niet erg praktisch voor distributie. We moeten hier een goede lua-module van maken. Om dat te doen, slaan we de code op in een apart bestand (in dit geval scp-storage.lua):

--[[
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 zoekt naar scripts (volgens de normale lua-regels) in de standaardmappen plus $CONFIGDIR/lua/*.lua. Ons script kan dus worden aangeroepen door simpelweg require "scp-storage" toe te voegen aan het luarc-bestand. Een paar extra opmerkingen…

  • De functie darktable.configuration.check_version zal de compatibiliteit voor jou controleren. De “...” verandert in de naam van uw script en {2,0,0} is de API-versie waarmee je jouw script hebt getest. Je kan meerdere API-versies toevoegen als je jouw script bijwerkt voor meerdere versies van darktable.

  • Zorg ervoor dat je al jouw functies als ‘lokaal’ declareert om de algemene naamruimte niet te vervuilen.

  • Zorg ervoor dat je geen debug-afdrukken in jouw code achterlaat – met name darktable.print_error stelt jou in staat om debug-afdrukken in uw uiteindelijke code achter te laten zonder de console te storen.

  • Je bent vrij om elke licentie voor je script te kiezen, maar scripts die op de website van darktable worden geüpload, moeten GPLv2 zijn.

Nadat je alle velden heeft ingevuld en je jouw code heeft gecontroleerd, kan je deze uploaden naar onze scriptpagina hier.

translations