Pull to refresh

Mylyn Generic Web Templates Connector и баг-трекер PEAR

Reading time4 min
Views1.2K
Последнее время я не мыслю свою работу в Eclipse без Mylyn. С помощью Mylyn я свёл в единый список задачи из Jira, используемой по работе, Mantis, используемой в собственном проекте, Redmine, используемой ещё на одном проекте… Благо для всех этих систем есть готовые коннекторы. Но вот сегодня мне понадобилось подключить ещё и баг-трекер PEAR, для которого коннектора нет. К счастью, добрые люди предусмотрели в Mylyn такую штуку, как Generic Web Templates Connector, позволяющую, в теории, подключиться к любому баг-трекеру. Под катом я поделюсь опытом настройки этого коннектора для PEAR.

Порыскав по интернету, я нашёл вот эту статью. К сожалению, она слегка устарела, но общий путь она мне указала.

Generic Web Templates Connector не входит в поставку Mylyn по умолчанию. Установить этот коннектор можно с сайта обновлений: http://download.eclipse.org/tools/mylyn/update/incubator. Там этот коннектор называется "Mylyn Connector: Web Templates (Advanced)" (документация).

Создание подключения к хранилищу



После установки коннектора идём в Task Repositories View и добавляем новое хранилище задач. В списке типов хранилища выбираем Web Templates (Advanced), жмём «Next» и переходим к настройке.



В начале указываем общие параметры хранилища:

  • Server:
    http://pear.php.net
  • Label: название хранилища (на свой вкус)
  • User ID: ваше имя пользователя на pear.php.net. Можно оставить галку «Anonymous» установленной и ничего здесь не указывать. Я указываю свой логин, только для того, чтобы его можно было использовать в запросах для фильтрации задач (об этом ниже).
  • Password: пароль. Вообще говоря, он не нужен, но если здесь ничего не написать, Eclipse будет ругаться.


Теперь начинается самое интересное. Разворачиваем секцию «Additional Settings». Здесь мы можем определить переменные, которые в дальнейшем будут нам доступны в виде подстановок в шаблонах. Я определил следующие переменные:

  • serverURL
    http://pear.php.net
    Chuck Burgess в своей статье рекомендует использовать https, но я не стал.
  • package_name — имя пакета, который вас интересует. Потребуется, если вы хотите иметь возможность создавать новые задачи из Eclipse.
  • limit — сколько запросов выводить в результатах поиска. Кому как нравится. Можно вообще оставить пустым.
  • id — честно сказать, я не очень понял, зачем Чак ввёл эту переменную, но пусть будет.


Все эти переменные будут доступны в шаблонах в виде "${имя_переменной}". Например адрес сервера будет подставляться вместо ${serverURL}.

Далее разворачиваем секцию «Advanced Configuration» и видим много страшных настроек.

  • Task URL — адрес страницы просмотра задачи:
    ${serverUrl}/bugs/bug.php?id=${id}
  • New Tasl URL — адрес для создания новой задачи (можно не заполнять, если не собираетесь создавать задачи):
    ${serverUrl}/bugs/report.php?package=${package_name}
  • Query Request URL — адрес для запроса списка задач. Будет подставляться по умолчанию в ваши запросы. Можно будет изменить в каждом запросе индивидуально:
    ${serverUrl}/bugs/search.php?cmd=display&status=OpenFeedback&limit=${limit}&package_name%5b%5d=${package_name}
    Вы можете подстроить этот адрес под свои нужды, например, убрать имя пакета или поменять статусы.
  • Query Pattern — шаблон, используя который Mylyn будет выдирать информацию о задачах со страницы результатов поиска. В шаблоне используются регулярные выражения и специальные подстановки Mylyn. Я наколдовал вот такую страшилу:
    <tr class="bug-result Asn">[\s]*<td class="bug-id"><a href="/bugs/({Id}[0-9]+)">[0-9]+</a><br /><a href="[^"]*" class="edit">\(edit\)</a></td>[\s]*<td class="bug-date">....-..-..</td>[\s]*<td>({Type}[a-zA-Z]+)</td>[\s]*<td>[^<]*</td>[\s]*<td>[^<]*</td>[\s]*<td>[^<]*</td>[\s]*<td>[^<]*</td>[\s]*<td>({Description}.[^<]+)</td>[\s]*<td>({Owner}[a-zA-Z]+)</td>[\s]*</tr>
    Будет подставляться по умолчанию в ваши запросы. Можно будет изменить в каждом запросе индивидуально.


С авторизацией я решил пока не морочиться, поэтому все поля «Login *» оставил незаполненными. Вместо этого, после настройки хранилища, я просто зашёл встроенным в Eclipse браузером на pear.php.net и авторизовался там, поставив галку «запомнить меня».

Жмём «Finish». Хранилище готово, теперь можно создать запрос.

Создание запроса к хранилищу



Запросы, как можно догадаться, используются чтобы получать из хранилища задачи, удовлетворяющие каким-то условиям. Обычно, назначенные вам.

Кликаем правой кнопкой по хранилищу и выбираем "New Query...". Открывшийся диалог очень похож на предыдущий.



В поле "Query Title" указываем название запроса, например «Все запросы».

Остальные поля по умолчанию будут заполнены так же, как одноимённые им поля в диалоге добавления хранилища. Здесь, при желании, их можно изменить под нужды конкретного запроса. Например, я хочу создать запрос «Задачи, назначенные мне», показывающий только те задачи, где я стою исполнителем. Для этого я могу отредактировать поле "Query URL", добавив к нему &assign=${userId} (полный URL будет таким: ${serverUrl}/bugs/search.php?cmd=display&status=OpenFeedback&limit=${limit}&package_name%5b%5d=${package_name}&assign=${userId}).

На заметку:

В этом диалоге есть две архиполезные кнопки "Open" и "Preview". Первая открывает выполняет все подстановки в Query URL и открывает получившийся адрес в браузере, вторая парсит страницу, по адресу Query URL при помощи регулярного выражения в Query Pattern и выдаёт найденные задачи в списке ниже.

Это сильно помогает в отладке шаблонов.


Сохраняем запрос. И, если всё правильно, то задачи из PEAR появляются в списке задач Mylyn:



Конечно, для таких задач недоступны все плюшки Mylyn, но основное присутствует: контекст, планирование, личные заметки. По-моему, вполне достаточно для работы.
Tags:
Hubs:
Total votes 17: ↑16 and ↓1+15
Comments8

Articles