Spring разработчики часто пишут документацию и README/HELP файлы к своим приложениям. Часто это делается в Markdown файлах. Markdown плагин в IntelliJ IDEA распознает файлы, предоставляет специальный редактор с подсветкой, автокомплитом и форматированием, а также дает визуальное отображение в панели предварительного просмотра в реальном времени. Кроме стандартной функциональности в IntelliJ IDEA есть пару уникальных фич, которые команда Spring АйО хотела бы выделить особенно.

Отображение Mermaid и PlantUML диаграмм

Что насчет отображения Mermaid и PlantUML диаграмм? Для поддержки их отображения потребуется установить соответствующие плагины. Достаточно объявить блок кода в markdown файле с указанием plantuml или mermaid языка, и во вкладке с визуальным отображением вы увидите полноценную диаграмму.

Отображение PlantUML и Mermaid диаграмм в markdown файле
Отображение PlantUML и Mermaid диаграмм в markdown файле


Кстати, отображение Mermaid диаграмм поддерживает еще и GitHub markdown preview. К сожалению, поддержки для PlantUML в GitHub нет.

Выполнение команд терминала

При клонировании проекта обычно имеется файл README.md с инструкциями и командами для запуска приложения, настройки среды и т. д. IntelliJ IDEA обнаруживает эти команды и предоставляет значки для их запуска. Следующие блоки кода будут выполняемыми в IDEA:

Выполняемыми команды из markdown файла
Выполняемыми команды из markdown файла

Поскольку IDEA Ultimate с поддержкой http client становится все дальше и дальше от российских разработчиков (раз, два и три), отдельно стоит рассмотреть выполнение cURL команд через markdown файл. Также, как и в http файлах вы можете описать GET, POST, DELETE и другие HTTP запросы и выполнять их из markdown файла для проверки работоспособности ваших эндпоинтов.

Выполнение cURL команд из markdown файла
Выполнение cURL команд из markdown файла

Не только bash скрипты

Но если функциональности bash не достаточно (или у вас аллергия на bash), то можно воспользоваться полноценным языком таким как kotlin, java, groovy, и т.д. Достаточно из markdown вызвать заранее заготовленные скрипты на kotlin/groovy scripts или JBANG (если кто-то помнит что это такое).

Давайте опять попробуем импортозаместить IntelliJ http client через один файл kotlin script.

  1. Создаем .kts файл. Тут есть интересная особенность. Чтобы заработал запуск файла и поддерживались все автодополнения, добавления зависимостей и т.д., файл должен оканчиваться на .main.kts.

  2. Добавим в наш скрипт библиотеку RestAssured, через специальную конструкцию:

    @file:DependsOn("io.rest-assured:rest-assured:5.4.0")
  3. Напишем простенький тест с проверкой и выводом результата:

    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 из контекстного меню этого файла.

  4. Добавим вызов этого скрипта через утилиту kotlinc в markdown файл:

    kotlinc -script ./test/rest.main.kts

    Преимущества такого подхода перед http client очевидны, у нас есть все возможности языка и настоящий фреймворк для тестирования.

    Запуск kotlin script из markdown файла
    Запуск kotlin script из markdown файла



Про другие возможности редактирования и просмотра markdown файлов вы можете прочитать в документации.

Присоединяйтесь к русскоязычному сообществу разработчиков на Spring Boot в телеграм - Spring АйО, чтобы быть в курсе последних новостей из мира разработки на Spring Boot и всего, что с ним связано.

Ждем всех, присоединяйтесь!

Комментарии (10)


  1. SUNsung
    05.07.2024 11:39
    +6

    Очень удобная фишка - запуск скриптов по клику прямо в ide из под MD.

    Я себе так всю автоматизацию перевел. Одна папка с парой исполняемых и "интерфейс" на md.

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

    И красота наступила. Хотя в свое время думал таки потратить время и написать плагин для jetbrains так как нет в наличии нормального удобного для работы с хуками


    1. Borz
      05.07.2024 11:39

      а если скрипты писать в своих shell-файлах, документацию не через Markdown, а AsciiDoc, тогда в документацию скрипты через тег include вставляются, но при этом, есть нормальная валидация скриптов, редактирование и возможность их запуска не только из IDE


  1. Sannis
    05.07.2024 11:39
    +2

    Хоть функционал и полезный и не всем известный, но 3 ссылки на телеграмм канал перевешивают полезность этой статьи.


    1. spring_aio Автор
      05.07.2024 11:39
      +1

      Добрый день! Да, возможно в этот раз немного переборщили с ссылками) Из текста статьи убрали самую первую ссылку. Учтём для следующих публикаций :) Спасибо!


  1. ritorichesky_echpochmak
    05.07.2024 11:39
    +5

    Так же из Markdown можно запускать всякие SQL-запросы в DG (не пробовал, должно во всех JB IDE платных работать), HTTP requests и, кажется, даже примеры кода на некоторых языках. Эдакий Jupyter notebook на минималках и в адекватном формате для документации, записок по ишшуям


  1. tnc4401
    05.07.2024 11:39

    А в VScode разве подобное недоступно?


  1. Andrey_Solomatin
    05.07.2024 11:39

    В платных версиях по такому же принципу команды прописанные в конфигурации (package.json/scripts) можно зупаскать.


  1. KiloLoki
    05.07.2024 11:39

    Ещё бы картинки умел показывать - цены бы не было. Вчера пытался вставить картинку (в Rider), а он ни в превью, ни в PDF её не показывает https://youtrack.jetbrains.com/issue/RIDER-111216/Markdown-preview-doesnt-render-image . Хотя ... кому нужны эти картинки в markdown, когда там можно запускать скрипты.


    1. alexander-shustanov
      05.07.2024 11:39
      +2

      да вообще отлично показывает картинки


      1. KiloLoki
        05.07.2024 11:39

        А если открыть и прочитать баг репорт, то будет понятно, что проблема с локальными файлами.

        Продукты JB отличные, я с ними уже 18 лет, но в последнее время очень растраивает их падающее качество. Фич больше, а качества меньше.