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.