Création de votre propre référentiel de plugins QGIS

La plupart des plugins QGIS accessibles au public sont hébergés dans le référentiel officiel . Cependant, dans certains cas, il est nécessaire de créer votre propre référentiel de plugins, par exemple, pour distribuer votre plugin dans un cercle restreint de collègues d'une organisation particulière. Dans cet article, nous verrons comment implémenter notre propre référentiel de plugins et discuterons également des exigences minimales qu'un plugin doit remplir pour le placer dans son propre référentiel.


Note 2
, , QGIS 3.10.5 LTR.

Gestionnaire de plugins


QGIS dispose d'un outil spécial pour travailler avec des plugins - le gestionnaire de plugins. Il vous permet de rechercher des plugins, de les installer et de les supprimer, de suivre l'apparition de nouvelles versions des plugins installés, de connecter des référentiels tiers, etc. Pour chaque plugin, le gestionnaire de plugins fournit une fenêtre avec des informations sur le plugin. Il existe trois scénarios pour remplir ces informations:

  1. Le plugin est dans le référentiel, mais n'est pas installé sur votre ordinateur. Dans ce cas, toutes les informations pour le gestionnaire de plugins sont extraites de la description du plugin dans le fichier plugins.xml.
  2. Le plugin est installé sur votre ordinateur et il existe une connexion avec le référentiel. Dans ce cas, une partie des informations est toujours extraite de la description du plugin dans le fichier plugins.xml, et une partie du fichier de métadonnées metadata.txt
  3. Le plugin est installé sur votre ordinateur et il n'y a pas de connexion avec le référentiel. Dans ce cas, toutes les informations du gestionnaire de plugins sont extraites du fichier de métadonnées metadata.txt.

Le tableau ci-dessous décrit l'origine des paramètres dans la fenêtre avec des informations sur le plugin, dans chacun des trois cas:
Paramètre dans la fenêtre d'informations sur le plugin dans le gestionnaire de plugins QGIS
La source à partir de laquelle le paramètre est extrait avant l'installation à partir du référentiel
La source à partir de laquelle le paramètre est extrait lorsque le plug-in est installé sur votre ordinateur et qu'il existe une connexion avec le référentiel
La source à partir de laquelle le paramètre est extrait lorsque le plug-in est installé sur votre ordinateur et qu'il n'y a pas de connexion avec le référentiel
Nom
plugins.xml (propriété de nom de la balise pyqgis_plugin)
plugins.xml (propriété de nom de la balise pyqgis_plugin)
metadata.txt
La description
plugins.xml
metadata.txt
metadata.txt
À propos de
plugins.xml
metadata.txt
metadata.txt
Version installée
metadata.txt  (paramètre de version)
metadata.txt  (paramètre de version)
Version disponible
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.



Chaque plugin dans le référentiel doit être conditionné dans une archive zip distincte, dans laquelle le dossier racine doit être présent, et dans lequel se trouvent les fichiers de votre plugin avec le fichier metadata.txt. Par le nom du dossier racine, le gestionnaire de plugins QGIS fera correspondre les plugins installés localement avec les plugins disponibles dans le référentiel. Les caractéristiques d'une telle comparaison seront discutées ci-dessous dans la section Communication entre le plugin local et le plugin dans le référentiel .

Un plugin QGIS fonctionnel ne doit contenir que deux fichiers requis dans son répertoire:
 
  • __init__.py est le point de départ du plugin. Le fichier doit contenir la méthode classFactory ().
  • metadata.txt - contient des informations générales sur le plugin.

Un exemple de plugin avec un ensemble minimal de fichiers peut être trouvé ici .

Vous pouvez étudier la structure des plugins plus en détail dans la documentation officielle .

Fichier de métadonnées


Comme déjà indiqué, dans le répertoire de chaque plugin, il doit y avoir un fichier metadata.txt contenant des informations générales sur le plugin. Les informations qu'il contient sont utilisées pour s'afficher dans le gestionnaire de plug-ins QGIS, rechercher un plug-in, etc.

La structure du fichier de métadonnées doit être la suivante:

[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

Vous pouvez utiliser deux points ou le symbole "=" comme séparateur pour le nom du paramètre et sa valeur. Cependant, il n'est pas nécessaire qu'il n'y ait qu'un seul type de délimiteur dans un seul fichier de métadonnées. Les espaces avant et après le séparateur n'affectent pas la lecture des données de metadata.txt, par conséquent, ils peuvent être en n'importe quelle quantité ou totalement absents. Notez également que le mot clé "[général]" au début du fichier de métadonnées est obligatoire.

Les paramètres requis, sans lesquels le plug-in peut être interrompu, sont les suivants:

  • name - nom du plugin,
  • version - version plugin,
  • qgisMinimumVersion est la version minimale de QGIS adaptée pour travailler avec ce plugin.

Vous pouvez trouver des informations sur d'autres paramètres ici .

plugins.xml


Chaque référentiel doit contenir un fichier plugins.xml qui fournit des informations générales au gestionnaire de plugins sur tous les plugins disponibles dans le référentiel.

Remarque
, .

La structure de plugins.xml doit être la suivante:

<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>

Les paramètres requis sans lesquels le référentiel peut être interrompu sont les suivants:

  • name - le nom du plugin (indiqué comme paramètre de la balise pyqgis_plugin)
  • version - version du plugin (spécifié comme paramètre de la balise pyqgis_plugin),
  • qgis_minimum_version - la version minimale de QGIS adaptée pour travailler avec ce plugin,
  • download_url - URL où se trouve l'archive zip avec votre plugin.

Il est recommandé d'étudier l'exemple de fichier plugins.xml du référentiel officiel QGIS (remplacez les numéros à la fin du lien par la version de QGIS installée sur votre ordinateur).

Pointe
plugins.xml, . xml.

La relation entre le plugin local et le plugin dans le référentiel


Comment le gestionnaire de plugins comprend-il qu'un certain plugin installé sur votre ordinateur et un plugin dans le référentiel connecté sont le même plugin, par exemple, afin de vérifier si une nouvelle version du plugin est apparue dans le référentiel?

Sans entrer dans les détails techniques, la règle de connexion des plugins est la suivante: le plug-in local et le plug-in dans le référentiel sont considérés par le gestionnaire de plug-ins QGIS comme étant le même plug-in si le nom du dossier racine du plug-in correspond au texte jusqu'au premier point de la balise file_name, ou si la balise file_name est manquante, avec du texte au premier point du dernier élément de chemin de la balise download_url.

En d'autres termes, si la balise file_name est présente dans la description du plugin à partir de plugins.xml, alors la partie jusqu'au premier point (mise en évidence en gras) en sera extraite, qui doit être exactement le nom du dossier racine du plugin installé afin que le gestionnaire de plugins QGIS les considère comme un et le même plugin. Si la balise file_name est manquante, le dernier élément de chemin de la balise download_url sera analysé de la même manière. La partie extraite de celui-ci jusqu'au premier point (surligné en gras) doit également être exactement le nom du dossier racine du plug-in installé afin que le gestionnaire de plug-ins QGIS les considère comme le même plug-in. S'il n'y a pas de correspondance entre le nom du dossier racine et la partie extraite de nom_fichier ou (si nom_fichier est manquant) de download_url, les plugins sont considérés comme des plugins différents.

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



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



Compte tenu de cette règle, il est recommandé d'ajouter la balise file_name dans la description des plugins dans le fichier plugins.xml, qui n'indique pas le nom de votre archive zip, mais le nom du dossier racine de votre plugin, auquel vous pouvez éventuellement ajouter une version ou d'autres informations, en les séparant par un point. Dans ce cas, vous pouvez nommer l'archive zip avec le plugin comme vous le souhaitez, y compris en séparant le nom du plugin et sa version par un trait d'union, comme c'est la coutume dans le référentiel officiel.

Remarque
QGIS file_name .

Exemples de plugins correctement conçus


Exemple 1


Structure du fichier du plugin


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


Fichier Metadata.txt


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


Fichier 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>

Dans cet exemple, la connexion entre le plugin installé localement sur votre ordinateur et le plugin dans le référentiel se fait via le nom du dossier racine et la balise download_url. Par conséquent, la partie du nom de l'archive zip au premier point et le nom du dossier racine du plugin doivent correspondre exactement.

Exemple 2


Structure du fichier du plugin


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


Fichier Metadata.txt


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


Fichier 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>

Dans cet exemple, la connexion entre le plugin installé localement sur votre ordinateur et le plugin dans le référentiel se fait via le nom du dossier racine et la balise file_name. Dans ce cas, la partie du nom de l'archive zip au premier point et le nom du dossier racine peuvent différer.

Créer un référentiel


Le référentiel de plugins QGIS doit être constitué d'un fichier plugins.xml qui fournit des informations générales au gestionnaire de plugins sur tous les plugins disponibles dans le référentiel et des archives zip contenant les plugins eux-mêmes. Le référentiel peut être hébergé sur des services Web tels que GitHub ou Bitbucket.

Une condition importante pour que QGIS reconnaisse un tel référentiel est d'accéder aux fichiers via un lien direct. Cela peut être fait, par exemple, en utilisant des pages Github ou des pages Bitbucket. Google Drive ou DropBox ne fonctionneront pas à ces fins. ils ne permettent pas un lien direct vers un fichier de la forme ... / filename.extension.

Les instructions d'utilisation de GitHub pour héberger un site Web statique sont disponibles ici .

Les instructions sur la façon d'utiliser Bitbucket pour héberger un site Web statique sont disponibles ici .

En règle générale, il vous suffit de renommer votre référentiel selon le modèle:

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

Après les paramètres nécessaires, le lien vers votre référentiel QGIS ressemblera à ceci:

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

Ce lien doit être spécifié dans le champ URL du gestionnaire de plug-ins QGIS lors de la connexion d'un nouveau référentiel. Si la connexion au référentiel réussit, l'état du référentiel sera défini sur «connecté» et les plugins décrits dans le fichier plugins.xml apparaîtront dans la liste des plugins disponibles.

All Articles