Spring разработчики часто пишут документацию и README/HELP файлы к своим приложениям. Часто это делается в Markdown файлах. Markdown плагин в IntelliJ IDEA распознает файлы, предоставляет специальный редактор с подсветкой, автокомплитом и форматированием, а также дает визуальное отображение в панели предварительного просмотра в реальном времени. Кроме стандартной функциональности в IntelliJ IDEA есть пару уникальных фич, которые команда Spring АйО хотела бы выделить особенно.
Отображение Mermaid и PlantUML диаграмм
Что насчет отображения Mermaid и PlantUML диаграмм? Для поддержки их отображения потребуется установить соответствующие плагины. Достаточно объявить блок кода в markdown файле с указанием plantuml
или mermaid
языка, и во вкладке с визуальным отображением вы увидите полноценную диаграмму.
Кстати, отображение Mermaid диаграмм поддерживает еще и GitHub markdown preview. К сожалению, поддержки для PlantUML в GitHub нет.
Выполнение команд терминала
При клонировании проекта обычно имеется файл README.md с инструкциями и командами для запуска приложения, настройки среды и т. д. IntelliJ IDEA обнаруживает эти команды и предоставляет значки для их запуска. Следующие блоки кода будут выполняемыми в IDEA:
Поскольку IDEA Ultimate с поддержкой http client становится все дальше и дальше от российских разработчиков (раз, два и три), отдельно стоит рассмотреть выполнение cURL команд через markdown файл. Также, как и в http файлах вы можете описать GET, POST, DELETE и другие HTTP запросы и выполнять их из markdown файла для проверки работоспособности ваших эндпоинтов.
Не только bash скрипты
Но если функциональности bash не достаточно (или у вас аллергия на bash), то можно воспользоваться полноценным языком таким как kotlin, java, groovy, и т.д. Достаточно из markdown вызвать заранее заготовленные скрипты на kotlin/groovy scripts или JBANG (если кто-то помнит что это такое).
Давайте опять попробуем импортозаместить IntelliJ http client через один файл kotlin script.
Создаем
.kts
файл. Тут есть интересная особенность. Чтобы заработал запуск файла и поддерживались все автодополнения, добавления зависимостей и т.д., файл должен оканчиваться на.main.kts
.-
Добавим в наш скрипт библиотеку RestAssured, через специальную конструкцию:
@file:DependsOn("io.rest-assured:rest-assured:5.4.0")
-
Напишем простенький тест с проверкой и выводом результата:
import io.restassured.RestAssured.* import org.hamcrest.Matchers.* baseURI = "http://localhost:8089/rest" get("/owners?city=Madison&sort=firstName") .then().log().body(true) .statusCode(200) .body("content[0].firstName", equalTo("David")) .body("content[1].firstName", equalTo("Maria")) .body("content[2].firstName", equalTo("Peter"))
Мы уже можем запустить этот скрипт вызвав команду
Run .main.kts
из контекстного меню этого файла. -
Добавим вызов этого скрипта через утилиту kotlinc в markdown файл:
kotlinc -script ./test/rest.main.kts
Преимущества такого подхода перед http client очевидны, у нас есть все возможности языка и настоящий фреймворк для тестирования.
Про другие возможности редактирования и просмотра markdown файлов вы можете прочитать в документации.
Присоединяйтесь к русскоязычному сообществу разработчиков на Spring Boot в телеграм - Spring АйО, чтобы быть в курсе последних новостей из мира разработки на Spring Boot и всего, что с ним связано.
Ждем всех, присоединяйтесь!
Комментарии (10)
Sannis
05.07.2024 11:39+2Хоть функционал и полезный и не всем известный, но 3 ссылки на телеграмм канал перевешивают полезность этой статьи.
spring_aio Автор
05.07.2024 11:39+1Добрый день! Да, возможно в этот раз немного переборщили с ссылками) Из текста статьи убрали самую первую ссылку. Учтём для следующих публикаций :) Спасибо!
ritorichesky_echpochmak
05.07.2024 11:39+5Так же из Markdown можно запускать всякие SQL-запросы в DG (не пробовал, должно во всех JB IDE платных работать), HTTP requests и, кажется, даже примеры кода на некоторых языках. Эдакий Jupyter notebook на минималках и в адекватном формате для документации, записок по ишшуям
Andrey_Solomatin
05.07.2024 11:39В платных версиях по такому же принципу команды прописанные в конфигурации (package.json/scripts) можно зупаскать.
KiloLoki
05.07.2024 11:39Ещё бы картинки умел показывать - цены бы не было. Вчера пытался вставить картинку (в Rider), а он ни в превью, ни в PDF её не показывает https://youtrack.jetbrains.com/issue/RIDER-111216/Markdown-preview-doesnt-render-image . Хотя ... кому нужны эти картинки в markdown, когда там можно запускать скрипты.
alexander-shustanov
05.07.2024 11:39+2да вообще отлично показывает картинки
KiloLoki
05.07.2024 11:39А если открыть и прочитать баг репорт, то будет понятно, что проблема с локальными файлами.
Продукты JB отличные, я с ними уже 18 лет, но в последнее время очень растраивает их падающее качество. Фич больше, а качества меньше.
SUNsung
Очень удобная фишка - запуск скриптов по клику прямо в ide из под MD.
Я себе так всю автоматизацию перевел. Одна папка с парой исполняемых и "интерфейс" на md.
Папка копипастится меж проектами и все. Скрипты написаны так что бы самостоятельно находить точку отчета, а не с директории запуска.
И красота наступила. Хотя в свое время думал таки потратить время и написать плагин для jetbrains так как нет в наличии нормального удобного для работы с хуками
Borz
а если скрипты писать в своих shell-файлах, документацию не через Markdown, а AsciiDoc, тогда в документацию скрипты через тег include вставляются, но при этом, есть нормальная валидация скриптов, редактирование и возможность их запуска не только из IDE