Membuat repositori plugin QGIS Anda sendiri

Sebagian besar plugin QGIS yang tersedia untuk umum dihosting di repositori resmi . Namun, dalam beberapa kasus menjadi perlu untuk membuat repositori plugin Anda sendiri, misalnya, untuk mendistribusikan plugin Anda dalam lingkaran sempit kolega dari organisasi tertentu. Pada artikel ini, kita akan melihat bagaimana menerapkan repositori plugin kita sendiri, dan juga membahas persyaratan minimum yang harus dipenuhi oleh plug-in untuk menempatkannya di repositori sendiri.


Catatan 2
, , QGIS 3.10.5 LTR.

Manajer Plugin


QGIS memiliki alat khusus untuk bekerja dengan plugin - pengelola plugin. Ini memungkinkan Anda untuk mencari plugin, menginstal dan menghapusnya, melacak tampilan versi baru plugin yang diinstal, menghubungkan repositori pihak ketiga, dll. Untuk setiap plugin, pengelola plugin menyediakan jendela dengan informasi tentang plugin tersebut. Ada tiga skenario untuk mengisi informasi ini:

  1. Plugin ada di dalam repositori, tetapi tidak diinstal di komputer Anda. Dalam hal ini, semua informasi untuk pengelola plugin diambil dari deskripsi plugin di file plugins.xml.
  2. Plugin diinstal di komputer Anda dan ada koneksi dengan repositori. Dalam hal ini, bagian dari informasi masih diekstraksi dari deskripsi plugin di file plugins.xml, dan bagian dari file metadata metadata.txt
  3. Plugin diinstal di komputer Anda dan tidak ada koneksi dengan repositori. Dalam hal ini, semua informasi untuk pengelola plugin diekstraksi dari file metadata metadata.txt.

Tabel di bawah ini menjelaskan dari mana parameter berasal dari jendela dengan informasi tentang plugin, dalam masing-masing dari tiga kasus:
Parameter di jendela informasi plugin di manajer plugin QGIS
Sumber dari mana parameter diambil sebelum instalasi dari repositori
Sumber dari mana parameter diambil ketika plug-in diinstal pada komputer Anda dan ada koneksi dengan repositori
Sumber dari mana parameter diambil ketika plug-in diinstal pada komputer Anda dan tidak ada koneksi dengan repositori
Nama
plugins.xml (nama properti dari tag pyqgis_plugin)
plugins.xml (nama properti dari tag pyqgis_plugin)
metadata.txt
Deskripsi
plugins.xml
metadata.txt
metadata.txt
Tentang
plugins.xml
metadata.txt
metadata.txt
Versi yang diinstal
metadata.txt  (parameter versi)
metadata.txt  (parameter versi)
Versi yang tersedia
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.



Setiap plugin di repositori harus dikemas dalam arsip zip terpisah, di mana folder root harus ada, dan di dalamnya ada file plugin Anda bersama dengan file metadata.txt. Dengan nama folder root, manajer plugin QGIS akan mencocokkan plugin yang dipasang secara lokal dengan plugin yang tersedia di repositori. Fitur-fitur perbandingan semacam itu akan dibahas di bawah di bagian Komunikasi antara plugin lokal dan plugin di repositori .

Plugin QGIS yang bisa diterapkan hanya boleh berisi dua file yang diperlukan dalam direktori:
 
  • __init__.py adalah titik awal plugin. File harus mengandung metode classFactory ().
  • metadata.txt - berisi informasi umum tentang plugin.

Contoh plugin dengan sekumpulan file minimal dapat ditemukan di sini .

Anda dapat mempelajari struktur plugin lebih detail di dokumentasi resmi .

File metadata


Seperti yang sudah disebutkan, di direktori setiap plugin harus ada file metadata.txt yang berisi informasi umum tentang plugin. Informasi darinya digunakan untuk ditampilkan di manajer plugin QGIS, mencari plugin, dll.

Struktur file metadata harus sebagai berikut:

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

Atau:

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

Anda dapat menggunakan tanda titik dua atau simbol "=" sebagai pemisah untuk nama parameter dan nilainya. Tidak perlu bahwa hanya ada satu jenis pembatas dalam satu file metadata. Spasi sebelum dan sesudah pemisah tidak mempengaruhi pembacaan data dari metadata.txt, oleh karena itu, mereka dapat dalam jumlah atau tidak ada sama sekali. Perhatikan juga bahwa kata kunci "[umum]" di awal file metadata diperlukan.

Parameter yang diperlukan, tanpa itu plug-in dapat terputus, adalah sebagai berikut:

  • nama - nama plugin,
  • versi - versi plugin,
  • qgisMinimumVersion adalah versi minimum QGIS yang cocok untuk bekerja dengan plugin ini.

Anda dapat menemukan informasi tentang parameter lain di sini .

plugins.xml


Setiap repositori harus berisi file plugins.xml yang menyediakan informasi umum untuk manajer plugin tentang semua plugin yang tersedia di repositori.

Catatan
, .

Struktur plugins.xml harus sebagai berikut:

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

Parameter yang diperlukan tanpa repositori dapat terganggu adalah sebagai berikut:

  • name - nama plugin (ditunjukkan sebagai parameter dari tag pyqgis_plugin)
  • versi - versi plugin (ditentukan sebagai parameter dari tag pyqgis_plugin),
  • qgis_minimum_version - versi minimum QGIS yang cocok untuk bekerja dengan plugin ini,
  • download_url - url tempat arsip zip dengan plugin Anda berada.

Disarankan untuk mempelajari contoh file plugins.xml dari repositori QGIS resmi (ganti angka di akhir tautan dengan versi QGIS yang diinstal pada komputer Anda).

Tip
plugins.xml, . xml.

Hubungan antara plugin lokal dan plugin dalam repositori


Bagaimana manajer plugin memahami bahwa plugin tertentu diinstal di komputer Anda dan plugin di repositori yang terhubung adalah plugin yang sama, misalnya, untuk memeriksa apakah versi baru plugin telah muncul di repositori?

Tanpa membahas perincian teknis, aturan untuk menghubungkan plugin adalah sebagai berikut: plug-in lokal dan plug-in di repositori dianggap oleh manajer plug-in QGIS sebagai plug-in yang sama jika nama folder root plug-in cocok dengan teks hingga titik pertama dari tag nama file, atau jika tag nama file tidak ada, dengan teks ke titik pertama dari elemen jalur terakhir dari tag download_url.

Dengan kata lain, jika tag file_name ada dalam deskripsi plugin dari plugins.xml, maka bagian ke titik pertama (disorot dalam huruf tebal) akan diekstraksi dari itu, yang harus persis nama folder root dari plugin yang diinstal sehingga manajer plugin QGIS menganggapnya satu dan plugin yang sama. Jika tag file_name hilang, elemen path terakhir dari tag download_url akan diuraikan dengan cara yang sama. Bagian yang diekstraksi darinya ke titik pertama (disorot dengan huruf tebal) juga harus persis nama folder root dari plug-in yang diinstal sehingga manajer plug-in QGIS menganggapnya sebagai plug-in yang sama. Jika tidak ada kecocokan antara nama folder root dan bagian yang diekstraksi dari file_name, atau (jika file_name hilang) dari download_url, maka plugins dianggap plugins yang berbeda.

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



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



Mempertimbangkan aturan ini, disarankan untuk menambahkan tag file_name dalam deskripsi plugins di file plugins.xml, yang tidak menunjukkan nama arsip zip Anda, tetapi nama folder root plugin Anda, yang Anda dapat secara opsional menambahkan versi atau informasi lain, memisahkannya dengan sebuah titik. Dalam hal ini, Anda dapat memberi nama arsip zip dengan plugin sesuai keinginan, termasuk dengan memisahkan nama plugin dan versinya dengan tanda hubung, seperti yang biasa dalam repositori resmi.

Catatan
QGIS file_name .

Contoh plugin yang dirancang dengan benar


Contoh 1


Struktur File Plugin


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


File metadata.txt


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


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

Dalam contoh ini, koneksi antara plugin yang dipasang secara lokal di komputer Anda dan plugin di repositori adalah melalui nama folder root dan tag download_url. Oleh karena itu, bagian dari nama arsip zip ke titik pertama dan nama folder root dari plugin harus sama persis.

Contoh 2


Struktur File Plugin


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


File metadata.txt


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


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

Dalam contoh ini, koneksi antara plugin yang dipasang secara lokal di komputer Anda dan plugin di repositori adalah melalui nama folder root dan tag file_name. Dalam hal ini, bagian dari nama arsip zip ke titik pertama dan nama folder root mungkin berbeda.

Buat Repositori


Repositori plugin QGIS harus terdiri dari file plugins.xml yang menyediakan informasi umum untuk manajer plugin tentang semua plugin yang tersedia di repositori dan arsip zip yang berisi plugin itu sendiri. Repositori dapat di-host di layanan web seperti GitHub atau Bitbucket.

Persyaratan penting bagi QGIS untuk mengenali repositori tersebut adalah mengakses file melalui tautan langsung. Ini dapat dilakukan, misalnya, menggunakan Github Pages atau Bitbucket Pages. Google Drive atau DropBox tidak akan berfungsi untuk tujuan ini. mereka tidak mengizinkan tautan langsung ke file dalam bentuk ... / filename.extension.

Petunjuk untuk menggunakan GitHub untuk meng-host situs web statis ada di sini .

Petunjuk tentang cara menggunakan Bitbucket untuk meng-host situs web statis ada di sini .

Sebagai aturan, Anda hanya perlu mengganti nama repositori Anda sesuai dengan templat:

username.imtqy.com (untuk GitHub)
atau
username.bitbucket.io (untuk Bitbucket)

Setelah pengaturan yang diperlukan, tautan ke repositori QGIS Anda akan terlihat seperti ini:

username.imtqy.com/plugins.xml (untuk GitHub)
atau
username.bitbucket.io/plugins.xml(untuk Bitbucket)

Tautan ini harus ditentukan di bidang URL di manajer plugin QGIS saat menghubungkan repositori baru. Jika koneksi ke repositori berhasil, maka status repositori akan diatur ke "terhubung", dan plugin yang dijelaskan dalam file plugins.xml akan muncul dalam daftar plugin yang tersedia.

All Articles