обмін сценаріями
Наразі весь наш код 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.
Після заповнення всіх полів, перевірки коду, ви можете завантажити його на нашу сторінку сценаріїв тут.