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.

translations