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/
* 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"
dtutils = require "lib/dtutils"

dtutils.check_min_api_version("7.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 not darktable.control.execute("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…

  • $CONFIGDIR représente le répertoire de configuration de darktable.

  • The function dtutils.check_min_api_version will check compatibility for you. "7.0.0" is the API version you have tested your script with and the “...” will turn into your script’s name.

  • 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