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:- 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.
- 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
- 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:- , 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.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).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.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)atauusername.bitbucket.io
(untuk Bitbucket)Setelah pengaturan yang diperlukan, tautan ke repositori QGIS Anda akan terlihat seperti ini:username.imtqy.com/plugins.xml
(untuk GitHub)atauusername.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.