Criando seu próprio repositório de plug-in QGIS

A maioria dos plugins QGIS disponíveis ao público estão hospedados no repositório oficial . No entanto, em alguns casos, torna-se necessário criar seu próprio repositório de plugins, por exemplo, para distribuí-lo em um círculo restrito de colegas de uma determinada organização. Neste artigo, veremos como implementar nosso próprio repositório de plug-ins e também discutiremos os requisitos mínimos que um plug-in deve atender para colocá-lo em seu próprio repositório.


Nota 2
, , QGIS 3.10.5 LTR.

Gerenciador de plug-ins


O QGIS possui uma ferramenta especial para trabalhar com plugins - o gerenciador de plugins. Permite procurar plug-ins, instalá-los e removê-los, rastrear a aparência de novas versões de plug-ins instalados, conectar repositórios de terceiros, etc. Para cada plug-in, o gerenciador de plug-ins fornece uma janela com informações sobre o plug-in. Existem três cenários para preencher essas informações:

  1. O plug-in está no repositório, mas não está instalado no seu computador. Nesse caso, todas as informações para o gerenciador de plug-ins são extraídas da descrição do plug-in no arquivo plugins.xml.
  2. O plug-in está instalado no seu computador e há uma conexão com o repositório. Nesse caso, parte das informações ainda é extraída da descrição do plug-in no arquivo plugins.xml e parte do arquivo de metadados metadata.txt
  3. O plug-in está instalado no seu computador e não há conexão com o repositório. Nesse caso, todas as informações para o gerenciador de plug-ins são extraídas do arquivo de metadados metadata.txt.

A tabela abaixo descreve de onde os parâmetros vêm na janela com informações sobre o plug-in, em cada um dos três casos:
Parâmetro na janela de informações do plug-in no gerenciador de plug-ins do QGIS
A fonte da qual o parâmetro é obtido antes da instalação do repositório
A fonte da qual o parâmetro é obtido quando o plug-in está instalado no seu computador e há uma conexão com o repositório
A fonte da qual o parâmetro é obtido quando o plug-in está instalado no seu computador e não há conexão com o repositório
Nome
plugins.xml (propriedade name da tag pyqgis_plugin)
plugins.xml (propriedade name da tag pyqgis_plugin)
metadata.txt
Descrição
plugins.xml
metadata.txt
metadata.txt
Sobre
plugins.xml
metadata.txt
metadata.txt
Versão instalada
metadata.txt  (parâmetro de versão)
metadata.txt  (parâmetro de versão)
Versão disponível
plugins.xml ( version pyqgis_plugin)
plugins.xml ( version pyqgis_plugin)
Download url
plugins.xml
plugins.xml
Changelog
metadata.txt
metadata.txt
Tags
plugins.xml
metadata.txt
metadata.txt
Author
plugins.xml
plugins.xml
metadata.txt
Email
metadata.txt
metadata.txt
Homepage
plugins.xml
plugins.xml
metadata.txt
Bug tracker
plugins.xml
plugins.xml
metadata.txt
Code repository
plugins.xml
plugins.xml
metadata.txt
QgisMinimumVersion
plugins.xml
metadata.txt
metadata.txt
QgisMaximumVersion
plugins.xml
metadata.txt
metadata.txt
Experimental
plugins.xml
metadata.txt
metadata.txt
Deprecated
plugins.xml
metadata.txt
metadata.txt
Icon
plugins.xml
metadata.txt
metadata.txt
Category
plugins.xml
plugins.xml
metadata.txt
  • , QGIS, metadata.txt plugins.xml . initGui() .
  • Installed version Available version, QGIS . Installed version Available version, QGIS «Installed version of this plugin is higher than any version found in repository». , , .
  • , metadata.txt plugins.xml . .
  • Available version plugins.xml version pyqgis_plugin, version.
  • metadata.txt plugins.xml Experimental Deprecated, .
  • QGIS (QgisMinimumVersion) (QgisMaximumVersion) , metadata.txt plugins.xml.
  • , . , QgisMinimumVersion + 0.99.



Cada plug-in no repositório deve ser empacotado em um arquivo zip separado, no qual a pasta raiz deve estar presente, e nele estão os arquivos do seu plug-in junto com o arquivo metadata.txt. Pelo nome da pasta raiz, o gerenciador de plug-ins do QGIS corresponderá aos plug-ins instalados localmente com os plug-ins disponíveis no repositório. Os recursos dessa comparação serão discutidos abaixo na seção Comunicação entre o plug-in local e o plug-in no repositório .

Um plug-in QGIS viável deve conter apenas dois arquivos necessários em seu diretório:
 
  • __init__.py é o ponto de partida do plug-in. O arquivo deve conter o método classFactory ().
  • metadata.txt - contém informações gerais sobre o plug-in.

Um exemplo de plug-in com um conjunto mínimo de arquivos pode ser encontrado aqui .

Você pode estudar a estrutura dos plugins com mais detalhes na documentação oficial .

Arquivo de metadados


Como já observado, no diretório de cada plug-in deve haver um arquivo metadata.txt que contém informações gerais sobre o plug-in. As informações dele são usadas para exibir no gerenciador de plug-ins do QGIS, procurar um plug-in etc.

A estrutura do arquivo de metadados deve ser a seguinte:

[general]
Parameter1_Name: Parameter1_Value
Parameter2_Name: Parameter2_Value
ParameterN_Name: ParameterN_Value

Ou:

[general]
Parameter1_Name= Parameter1_Value
Parameter2_Name= Parameter2_Value
ParameterN_Name= ParameterN_Value

Você pode usar dois pontos ou o símbolo "=" como um separador para o nome do parâmetro e seu valor. No entanto, não é necessário que exista apenas um tipo de delimitador em um único arquivo de metadados. Os espaços antes e depois do separador não afetam a leitura dos dados do metadata.txt; portanto, eles podem estar em qualquer quantidade ou ausentes por completo. Observe também que a palavra-chave "[geral]" no início do arquivo de metadados é necessária.

Os parâmetros necessários, sem os quais o plug-in pode ser interrompido, são os seguintes:

  • nome - nome do plug-in,
  • version - versão do plugin,
  • qgisMinimumVersion é a versão mínima do QGIS adequada para trabalhar com este plugin.

Você pode encontrar informações sobre outros parâmetros aqui .

plugins.xml


Cada repositório deve conter um arquivo plugins.xml que forneça informações gerais para o gerenciador de plugins sobre todos os plugins disponíveis no repositório.

Nota
, .

A estrutura do plugins.xml deve ser a seguinte:

<plugins>
    <pyqgis_plugin name="Plugin1_Name" version="Plugin1_Version">                 
        <Plugin1_Parameter1_Name>Plugin1_Parameter1_Value</Plugin1_Parameter1_Name>
        <Plugin1_Parameter2_Name>Plugin1_Parameter2_Value</Plugin1_Parameter2_Name>
        ....
        <Plugin1_ParameterN_Name>Plugin1_ParameterN_Value</Plugin1_ParameterN_Name>
    </pyqgis_plugin>
    ...
    <pyqgis_plugin name="PluginN_Name" version="PluginN_Version">
       <PluginN_Parameter1_Name>PluginN_Parameter1_Value</PluginN_Parameter1_Name>
       <PluginN_Parameter2_Name>PluginN_Parameter2_Value</PluginN_Parameter2_Name>
        ....
       <PluginN_ParameterN_Name>PluginN_ParameterN_Value</PluginN_ParameterN_Name>
    </pyqgis_plugin>
</plugins>

Os parâmetros necessários sem os quais o repositório pode ser interrompido são os seguintes:

  • nome - o nome do plug-in (indicado como um parâmetro da tag pyqgis_plugin)
  • version - versão do plug-in (especificado como um parâmetro da tag pyqgis_plugin),
  • qgis_minimum_version - a versão mínima do QGIS adequada para trabalhar com este plug-in,
  • download_url - URL onde está localizado o arquivo zip com seu plugin.

Recomenda-se estudar o arquivo plugins.xml de exemplo do repositório oficial do QGIS (substitua os números no final do link pela versão do QGIS instalada no seu computador).

Gorjeta
plugins.xml, . xml.

O relacionamento entre o plug-in local e o plug-in no repositório


Como o gerenciador de plug-ins entende que um determinado plug-in instalado no seu computador e um plug-in no repositório conectado são o mesmo plug-in, por exemplo, para verificar se uma nova versão do plug-in apareceu no repositório?

Sem entrar em detalhes técnicos, a regra para conectar plug-ins é a seguinte: o plug-in local e o plug-in no repositório são considerados pelo gerente de plug-in do QGIS como o mesmo plug-in se o nome da pasta raiz do plug-in corresponder ao texto até o primeiro ponto da tag file_name ou se a tag file_name estiver ausente, com texto para o primeiro ponto do último elemento do caminho da tag download_url.

Em outras palavras, se a tag file_name estiver presente na descrição do plug-in em plugins.xml, a parte até o primeiro ponto (destacada em negrito) será extraída dela, que deve ser exatamente o nome da pasta raiz do plug-in instalado para que o gerenciador de plug-ins do QGIS os considere um e o mesmo plugin. Se a tag file_name estiver ausente, o último elemento do caminho da tag download_url será analisado da mesma maneira. A parte extraída dele para o primeiro ponto (destacada em negrito) também deve ser exatamente o nome da pasta raiz do plug-in instalado, para que o gerenciador de plug-in do QGIS os considere o mesmo plug-in. Se não houver correspondência entre o nome da pasta raiz e a parte extraída de file_name ou (se estiver faltando file_name) do download_url, os plug-ins serão considerados plug-ins diferentes.

<file_name>PluginName.2.1.0.zip</file_name>



<download_url>YourRepositoryURL/PluginName.2.1.0.zip</download_url>



Considerando essa regra, é recomendável adicionar a tag file_name na descrição dos plugins no arquivo plugins.xml, que não indica o nome do seu arquivo zip, mas o nome da pasta raiz do seu plug-in, na qual você pode opcionalmente adicionar uma versão ou outras informações, separando-as com um ponto. Nesse caso, você pode nomear o arquivo zip com o plug-in como quiser, inclusive separando o nome do plug-in e sua versão com um hífen, como é habitual no repositório oficial.

Nota
QGIS file_name .

Exemplos de plugins projetados corretamente


Exemplo 1


Estrutura do arquivo de plug-in


FolderName.SomeInfo.zip
---FolderName
------__init__.py
------metadata.txt


Arquivo Metadata.txt


[general]
name: PluginName
version: 2.1.0
qgisMinimumVersion: 3.0


Arquivo Plugins.xml


<plugins> 
   <pyqgis_plugin name="PluginName" version="2.1.0">
       <qgis_minimum_version>3.0.0</qgis_minimum_version>
        <download_url>YourRepositoryURL/FolderName.SomeInfo.zip</download_url>
   </pyqgis_plugin>
</plugins>

Neste exemplo, a conexão entre o plug-in instalado localmente no seu computador e o plug-in no repositório é feita através do nome da pasta raiz e da tag download_url. Portanto, a parte do nome do arquivo zip até o primeiro ponto e o nome da pasta raiz do plug-in devem corresponder exatamente.

Exemplo 2


Estrutura do arquivo de plug-in


ArchiveName.SomeInfo.zip
---FolderName
------__init__.py
------metadata.txt


Arquivo Metadata.txt


[general]
name: PluginName
version: 2.1.0
qgisMinimumVersion: 3.0


Arquivo Plugins.xml


<plugins>
   <pyqgis_plugin name="PluginName" version="2.1.0">
       <qgis_minimum_version>3.0.0</qgis_minimum_version>
        <file_name>FolderName.SomeInfo</file_name>
        <download_url>YourRepositoryURL/ArchiveName.SomeInfo.zip</download_url>
   </pyqgis_plugin>
</plugins>

Neste exemplo, a conexão entre o plug-in instalado localmente no seu computador e o plug-in no repositório é através do nome da pasta raiz e da tag file_name. Nesse caso, a parte do nome do arquivo zip até o primeiro ponto e o nome da pasta raiz podem ser diferentes.

Criar Repositório


O repositório de plug-ins do QGIS deve consistir em um arquivo plugins.xml que fornece informações gerais para o gerenciador de plug-ins sobre todos os plug-ins disponíveis no repositório e nos arquivos zip que contêm os próprios plug-ins. O repositório pode ser hospedado em serviços da web como GitHub ou Bitbucket.

Um requisito importante para o QGIS reconhecer esse repositório é acessar arquivos por meio de um link direto. Isso pode ser feito, por exemplo, usando páginas do Github ou páginas do Bitbucket. O Google Drive ou o DropBox não funcionarão para esses fins. eles não permitem um link direto para um arquivo no formato ... / filename.extension.

Instruções para usar o GitHub para hospedar um site estático estão localizadas aqui .

Instruções sobre como usar o Bitbucket para hospedar um site estático estão localizadas aqui .

Como regra, você só precisa renomear seu repositório de acordo com o modelo:

username.imtqy.com (para GitHub)
ou
username.bitbucket.io (para Bitbucket)

Após as configurações necessárias, o link para seu repositório QGIS terá a seguinte aparência:

username.imtqy.com/plugins.xml (para GitHub)
ou
username.bitbucket.io/plugins.xml(para Bitbucket)

Este link deve ser especificado no campo URL no gerenciador de plug-ins do QGIS ao conectar um novo repositório. Se a conexão ao repositório for bem-sucedida, o status do repositório será definido como "conectado" e os plug-ins descritos no arquivo plugins.xml aparecerão na lista de plug-ins disponíveis.

All Articles