Как использовать новый репозиторий расширений QGIS

Еще при выходе QGIS 1.7.0 сообщалось о создании нового официального репозитория расширений со множеством плюшек и наворотов (рейтинги, списки рекомендованных и недавно добавленных модулей и т.п.). Кроме того, в багтрекере QGIS был создан специальный раздел для пользовательских расширений, где авторы могут создавать домашнюю страницу, вики, багтрекер и хранилище кода для своих разработок. Основная цель всех этих действий — создать единый репозиторий модулей, а также предоставить единое место для сообщения об ошибках как модулей, так и самой QGIS.

И хотя новый репозиторий введен в строй, а также добавлен как репозиторий по умолчанию в разрабатываемой QGIS 1.9.90, разработчики модулей пока не спешат им пользоваться (на момент написания поста в новом репозитории числится всего 35 модулей. Для сравнения, в старом — 111). Отчасти это, наверное, можно объяснить неосведомленностью, а отчасти — немного запутанной процедурой добавления своего модуля.

Попробуем разобраться.

Будем исходить из того, что код нашего расширения лежит в каком-то публичном репозитории, например, на GitHub или BitBucket, но багтрекер и вики мы хотим создать на hub.qgis.org. Это несколько облегчит жизнь пользователям: они смогут использовать уже существующую учетную запись, чтобы оставлять сообщения об ошибках. Для этого:

  • идем на hub.qgis.org и авторизуемся
  • открываем раздел «Projects» и жмем кнопку «New project» или заходим в подраздел «User plugins» и жмем кнопку «New subproject»
  • заполняем форму (обратите внимание, в списке «Subproject of» надо указать «User plugins»): указываем название модуля, краткое описание, ссылку на домашнюю страницу (если есть). Здесь же можно выбрать необходимые компоненты багтрекера (wiki, собственно трекер, календарь…). Большинство настроек позже можно будет изменить
  • заполнив форму, жмем кнопку «Save». Все, новый проект создан

Багтрекер и репозиторий с кодом готовы. Осталось загрузить расширение в репозиторий расширений.

Прежде чем формировать архив и загружать его на сервер, необходимо заполнить метаданные в файле metadata.txt расширения и указать там адрес багтрекера, репозитория и домашней страницы (подробнее). Вот пример:

[general]
name = Cool Plugin
description = Does some useful actions with your data
category = Vector
version = 1.0.0
qgisMinimumVersion = 1.7.2
icon = icons/pluginicon.png
authorName=username
tags=vector, bounding box, buffer
experimental = True
deprecated = False
homepage = http://someserver.com/coolplugin.html
tracker = http://hub.qgis.org/projects/coolplugin
repository = http://github.com/username/coolplugin

Сохраняем изменения и создаем архив с расширением.

Теперь все готово к загрузке расширения в новый репозиторий:

  • идем на plugins.qgis.org и авторизуемся
  • переходим к разделу «Plugins»
  • по ссылке «Share a plugin» из боковой панели переходим к форме загрузки
  • выбираем файл с расширением, при необходимости активируем флаг «Experimental» и жмем «Upload»

Если расширение упаковано правильно и метаданные не содержат ошибок, архив будет загружен на сервер. В противном случае, выдается сообщение об ошибке и загрузка отменяется. После устранения ошибок загрузку надо повторить.

Загруженный модуль получает статус неподтвержденного и какое-то время не будет доступен всем пользователям. И только после утверждения администратором он попадает в список общедоступных. Кстати, такая петрушка будет с каждой загруженной версией, даже если перед этим ваш модуль был утвержден. Возможно, в дальнейшем эту политику пересмотрят.

Для загрузки архива на сервер также можно использовать небольшой скрипт. Например, можно добавить его вызов в post-commit хук или в Makefile и выполнять загрузку новых версий без запуска браузера.

Как видите, ничего сложного в использовании новой инфраструктуры нет.