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.

translations