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 aufdatierst. -
Stelle sicher, alle Funktionen als
local
zu deklarieren, um die generelle Namensgebung nicht zu belasten. -
Stelle sicher, keine Debug-Ausdrucke in deinem Code beizubehalten –
darktable.print_error
im Speziellen erlaubt es dir, Debug-Ausgaben in deinem gültigen Code zu belassen, ohne die Konsole 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