udostępnianie skryptów
Cały nasz kod znajduje się do tej pory w luarc. To dobre miejsce na rozwój kodu, ale niekoniecznie do jego dystrybucji. Potrzebujemy umieścić go w odpowiednim module lua. W tym celu zapiszemy kod w odrębnym pliku (w tym przypadku scp-storage.lua
):
--[[
SCP STORAGE
prosty eksport zdjęć przez scp
AUTHOR
Jérémy Rosen (jeremy.rosen@enst-bretagne.fr)
INSTALACJA
* skopiuj ten plik do $CONFIGDIR/lua/ gdzie CONFIGDIR
jest katalogiem konfiguracyjnym darktable
* i dodaj poniższą linię do $CONFIGDIR/luarc
require "scp-storage"
UŻYCIE
* wybierz "Eksport przez SCP" w menu wyboru miejsc eksportu
* ustaw katalog docelowy
* wyeksportuj zdjęcia
LICENCJA
GPLv2
]]
darktable = require "darktable"
darktable.configuration.check_version(...,{2,0,0})
local scp_path = darktable.new_widget("entry"){
tooltip ="Pełna docelowa ścieżka kopiowania. Może zawierać użytkownika i nazwę hosta",
text = "",
reset_callback = function(self) self.text = "" end
}
darktable.register_storage("scp_export","Eksport przez 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("błąd scp dla "..tostring(image))
end
end,
nil, --finalize
nil, --supported
nil, --initialize
darktable.new_widget("box") {
orientation ="horizontal",
darktable.new_widget("label"){label = "docelowa SCP PATH "},
scp_path,
})
darktable poszuka skryptów (zgodnie z regułami lua) w standardowych katalogach plus $CONFIGDIR/lua/*.lua
. Nasz skrypt może więc być wywoływany poprzez proste dodanie require "scp-storage"
w pliku luarc. Jeszcze tylko kilka uwag…
-
Funkcja
darktable.configuration.check_version
sprawdzi za ciebie zgodność. “...
” rozwija się do nazwy skryptu, a{2,0,0}
to wersja API, z którą skrypt był testowany. Możesz dodać kilka wersji API, jeśli przystosujesz skrypt do działania z wieloma wersjami darktable. -
Upewnij się, że wszystkie funkcje deklarujesz jako ’local’, żeby uniknąć zaśmiecenia ogólnej przestrzeni nazw.
-
Upewnij się, że nie zapomniałeś o wywołaniu debuggera –
darktable.print_error
pozwoli w szczególności pozostawić wydruk wyjścia w finalnym kodzie bez zaśmiecania konsoli. -
Dla swojego skryptu możesz wybrać dowolną licencję, ale skrypty wgrywane na stronę darktable muszą być objęte GPLv2.
Po wypełnieniu wszystkich pól i sprawdzeniu kodu możesz wgrać go na naszą stronę skryptów tutaj.