compartilhar scripts

Até agora, todo nosso código lua esteve no luarc. Esta é uma boa maneira de desenvolver seu script mas não é muito prático para distribuição. Nós precisamos tornar isto um módulo lua adequado. Para fazer isso, nós devemos salvar o código em um arquivo separado (scp-storage.lua neste caso):

--[[
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,
})

O darktable buscará scripts (seguindo as regras normais do lua) nas pastas padrão mais a $CONFIGDIR/lua/*.lua. Assim, nosso script pode ser chamado simplesmente adicionando require “scp-storage” no arquivo luarc. Algumas notas adicionais…

  • A função darktable.configuration.check_version verificará a compatibilidade para você. O “...” se converterá no seu nome de script e {2,0,0} é a versão da API com a qual você testou seu script. Você pode adicionar múltiplas versões de API se atualizar seu script para múltiplas versões do darktable.

  • Certifique-se de declarar todas suas funções como local para não contaminar o espaço de nomes em geral.

  • Certifique-se de não deixar impressões de depuração em seu código – darktable.print_error em particular lhe permite deixar impressões de depuração no final do código sem incomodar o console.

  • Você está livre para usar qualquer licença para seu script, mas scripts que são carregados na página Web do darktable precisam ser GPLv2.

Uma vez que tenha preenchido todos os campos, verificado se código, você pode enviá-lo para nossa página de scripts aqui.

translations