partage de scripts
Jusqu’à présent, tout notre code Lua était dans luarc. C’est un bon moyen de développer votre script mais pas très pratique pour la distribution. Nous devons en faire un module Lua dédié. Pour ce faire, nous sauvegardons le code dans un fichier séparé (ici 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 recherche les scripts *.lua
(en suivant les règles Lua normales) dans le répertoire $CONFIGDIR/lua
. Ainsi, notre script peut être appelé en ajoutant simplement require « scp-storage »
dans le fichier luarc. Quelques notes supplémentaires…
-
La fonction
darktable.configuration.check_version
vérifie la compatibilité pour vous. Le «...
» est le nom de votre script et{2,0,0}
est la version de l’API avec laquelle vous avez testé votre script. Vous pouvez ajouter plusieurs versions d’API si vous mettez à jour votre script pour plusieurs versions de darktable. -
Assurez-vous de déclarer toutes vos fonctions comme
locales
afin de ne pas polluer l’espace de noms global. -
Assurez-vous de ne pas laisser de messages de débogage dans votre code – utilisez
darktable.print_error
pour laisser des traces de débogage dans votre code final sans polluer la console. -
Vous êtes libre de choisir n’importe quelle licence pour votre script, mais les scripts téléchargés sur le site Web de darktable doivent être GPLv2.
Une fois que vous avez rempli tous les champs, vérifié votre code, vous pouvez le télécharger sur notre page de script ici.