обмін сценаріями

Наразі весь наш код lua був у luarc. Це хороший спосіб розробити свій сценарій, але не дуже практичний для розповсюдження. Нам потрібно зробити це належним модулем lua. Для цього ми зберігаємо код в окремому файлі (в даному випадку scp-storage.lua):

--[[
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 шукатиме сценарії (дотримуючись звичайних правил lua) у стандартних каталогах плюс $CONFIGDIR/lua/*.lua. Отже, наш сценарій можна викликати, просто додавши require "scp-storage" у файл luarc. Пара додаткових приміток…

  • Функція darktable.configuration.check_version перевірить для вас сумісність. Значок “...” перетвориться на ім’я вашого сценарію, а {2,0,0} – це версія API, з якою ви протестували свій сценарій. Ви можете додати кілька версій API, якщо оновите сценарій для декількох версій darktable.

  • Обов’язково оголосіть усі свої функції як local (“локальні”), щоб не забруднювати загальний простір імен.

  • Переконайтеся, що ви не залишаєте налагоджувальний друк у своєму коді – зокрема, “darktable.print_error” дозволяє залишати налагоджувальний друк у остаточному коді, не заважаючи консолі.

  • Ви можете вибрати будь-яку ліцензію для свого сценарію, але сценарії, які завантажуються на веб-сайт darktable, мають бути GPLv2.

Після заповнення всіх полів, перевірки коду, ви можете завантажити його на нашу сторінку сценаріїв тут.

translations