Skripte teilen

Bis jetzt waren alle Lua Codes in luarc. Das war ein guter Weg, um dir ein Skript zu entwickeln, aber weniger praktikabel für eine Weitergabe. Das müssen in einem eigens dafür bestimmten Lua Modul. Um das zu machen, sichern wir den Code in eine separate Datei (scp-storage.lua für diesen Fall):

--[[
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 wird Skripte suchen (den normalen Lua Regeln folgend) in den Standardverzeichnissen plus $CONFIGDIR/lua/*.lua. So kann unser Skript aufgerufen werden indem man einfach an die Datei anfügt require "scp-storage" in the luarc file. Einige extra Bemerkungen…

  • Die Funktion darktable.configuration.check_version wird die Kompatibilität überprüfen. Das “...” wird in den Namen des Skriptes gewandelt und {2,0,0} ist die API Version, mit der du das Skript geprüft hast. Du kannst mehrere Versionen von API dazufügen, wenn du dein Skript für mehrere Versionen von darktable auf datierst.

  • Stelle sicher, alle Funktionen als local zu deklarieren, um die generelle Namensgebung nicht zu belasten.

  • Stelle sicher keine Debug-Ausdrucke in deinem Code – darktable.print_error im Detail erlaubt es dir Debug-Ausdrucke in deinem gültigen Code zu belassen, ohne das Gerät zu stören.

  • Du bist frei jede Lizenz für deine Skripts zu wählen, aber Skripte, die auf die darktable Webseite hochgeladen werden, müssen GPLv2 sein.

Wenn du alle Felder gefüllt hast, deinen Code überprüft hast, dann kannst du dein Skript auf unsere Seite hochladen hier

Translations