Как работает интеграция JetBrains Upsource и IDE под капотом?

У Upsource есть свой плагин к PhpStorm, который интегрируется с браузером.

Интересует как он это делает. И что нужно, чтобы допустим написать свой плагин, который позволит перенаправлять пользователя из браузера в IDE?

P.S. Я PHP разработчик и с миром Java пока еще не знаком.

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Ctrl + Enter
Ctrl + Enter

Скорее всего используется свой протокол для ссылок, например, phpstorm://openFile=path-to-file.
Чтобы это все открывалось в IDE она должна при установке зарегистрировать себя как handler для этого протокола. После всего этого операционная система будет знать, кто может обработать этот протокол.
Для написания своих плагинов существует отдельная приблуда для jetbrains ide, там вроде бы, даже свой язык программирования имеется. К сожалению, названий не помню, но все гуглится. Кстати, можно ещё в репозитории плагинов посмотреть, там вроде было что-то для создания плагинов.

phpstorm://openFile=path-to-file.
в моем случае нежелательно. Тут нужно передавать полный путь к файлу, а я не могу знать в какой папке у пользователя размещен проект, и в общем то не должен. В upsource эта проблема каким-то образом решена.

Это уже детали реализации. Чтобы ответить на этот вопрос нужно быть знакомым с API для плагинов. Плюс, взаимодействие между продуктами jetbrains всегда будет лучше, скорее всего у них даже есть больше возможностей для интеграции по сравнению с самописными плагинами

Кстати нашел еще один интерестный способ перенаправить пользователя из браузера в ide.
Отправить пользователя на http://localhost:63342/api/file/?file=relative/path/to/file&line=22
Когда стартуют idia ide они запускают локальный сервер, api которого мы можем использовать.
Плюс такого подхода в том что нужно знать только относительный путь к файлу в проекте.
А минус в том что если в ide не открыт нужный проект, файл не откроется.

Підписатись на коментарі