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_versionsprawdzi 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_errorpozwoli 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.