rebar3_plugin — шаблон GitHub для швидкого створення плагінів

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

Всім привіти! З вами ​Ukrainian Erlanger 🤘 У цій статті я хочу розповісти вам про rebar3_plugin. rebar3_plugin — це простий репозиторій шаблонів GitHub для швидкого створення власних плагінів rebar3. Ми створили його разом із Брухо Бенавідесом саме для вас!

«We become what we behold. We shape our tools, and thereafter our tools shape us» © Marshall McLuhan

У статті «Перевіряємо орфографію коду Erlang разом із Sheldon» я мимохідь згадав про цей інструмент, який ми використали задля створення плагіну. Але оскільки все повинно з чогось починатися, я вважаю, що цей інструмент заслуговує окремої статті.

Що таке плагін rebar3_plugin?

Не знаю, як ви, але коли я вперше спробував створити плагін для rebar3, у мене виникло багато запитань, і я витратив досить багато часу на пошук документації з прикладами у різних проєктах. Я також витратив багато часу, порівнюючи скелет свого плагіна з уже існуючими.

Тоді у Брухо Бенавідеса виникла ідея! Ось, як Брухо описав цю ідею мені, коли ми вперше зустрілися на erlangforums.com:

«Шаблон репозиторіїв плагінів rebar3 в GitHub: я знаю, що GitHub зараз має шаблони репозиторіїв, і після створення кількох надто схожих проєктів я хотів би побачити, чи зможемо ми використовувати його, щоб уникнути дублювання коду».

Що повинен містити мій шаблон?

Перше запитання, яке мені спало на думку: що він має на увазі під дублюванням коду? Оскільки я ніколи раніше не розробляв плагінів, перше, що я зробив, це почав порівнювати існуючі репозиторії плагінів.

Ось мій список власних висновків:

  • Усі репозиторії плагінів rebar3 мають базовий каркас на основі документації rebar3.
  • Майже всі плагіни можуть приймати додаткові аргументи через командний рядок в оболонці.
  • Майже всі плагіни мають додаткові плагіни проєкту, які вони використовують, наприклад, для форматування та перевірки свого коду, і так далі.
  • Більшість плагінів мають основні загальні тести.
  • Більшість усіх плагінів перевіряються за допомогою GitHub Actions.
  • Більшість плагінів використовують GitHub.
  • Також використовують шаблони проблем GitHub.

Наскільки потужні репозиторії шаблонів GitHub?

Тепер, коли у мене було все необхідне, я з великими надіями почав свою першу спробу налаштування шаблону репозиторію GitHub. Я хотів надати принаймні кілька версій шаблону, також деякі конкретні/користувацькі змінні GitHub для гнучкості та спосіб оновлення репозиторіїв за допомогою цього шаблону в «реальному часі» при застосуванні в якості цього шаблону.

Після деякого пошуку в Google і прочитання офіційної документації GitHub щодо створення репозиторію шаблонів, на моє здивування, я виявив, що вони не вміють генерувати код автоматично, а також у них немає змінних шаблону чи будь-якого іншого механізму для автоматичної персоналізації репозиторію, коли ви намагаєтесь створити на його основі новий. Зрештою, це виявляється не більше ніж fork репозиторієм.

Для мене цього було замало. Я хотів, щоб розробники плагінів мали змогу якось представити назву та опис свого репозиторію, а потім... бум! Автоматично отримували повноцінний плагін rebar3, який вони могли б почати вдосконалювати та розвивати без додаткових маніпуляцій.

Обхідний шлях

Щоб цей проєкт був дійсно корисним, нам потрібно було реалізувати щось, що автоматично та швидко перетворює код шаблону на щось дійсно корисне. Для цього я розглянув деякі варіанти, а саме використання escript сценарію, або сценарію bash, або просто використання Makefile. Я вибрав сценарій bash, оскільки він міг виглядати досить простим та бути неймовірно ефективним. Ось, чому репозиторій шаблонів містить сценарій bootstrap, який вам буде потрібно запустити (як ви побачите нижче), щоб перейти від rebar3_plugin до your_plugin.

Як створити свій плагін на основі rebar3_plugin?

Отже, це була історія того, як з’явився rebar3_plugin. Тепер давайте подивимося, що ви можете з ним зробити.

  • Перейдіть на сторінку rebar3_plugin у GitHub.
  • Знайдіть і натисніть кнопку з написом «Create Repository from Template» або скористайтеся цим посиланням.
  • Додайте назву та опис для нового плагіна rebar3 на новій сторінці.
  • Натисніть кнопку «Create Repository from Template».
  • Ви будете перенаправлені на вашу нову сторінку сховища.
  • Клонуйте нове сховище на комп’ютері.
  • Запустіть «./bootstrap» у командній оболочці.
  • Перевірте сгенерированный код.
  • Зафіксуйте та опублікуйте свої зміни.
  • Святкуйте!

Після виконання цих кроків у вас буде плагін rebar3, включаючи:

  • GitHub Actions із завданнями для Linux/Windows.
  • GitHub Issue Templates.
  • Основна структура для початку додавання загальних тестів.
  • Плагіни проєкту (rebar3_hex, rebar3_format, rebar3_lint, rebar3_hank), включаючи чудовий test alias rebar3, щоб запустити їх усі одночасно за допомогою команди $ rebar3 test.
  • Фантастична і досить корисна конфігурація rebar.config з усіма OTP-речами.

Після запуску bootstrap структура вашого дерева папок буде виглядати так:

$ ./bootstrap
$ tree -a
├── .github
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── other_issues.md
│   └── workflows
│       └── ci.yaml
├── src
│   ├── rebar3_plugin.app.src
│   ├── rebar3_plugin.erl
│   └── rebar3_plugin_prv.erl
└── test
   └── rebar3_plugin_SUITE.erl
├── .gitignore
├── LICENSE
├── README.md
├── CHANGELOG.md
├── rebar.config
├── elvis.config
├── rebar.lock

Оскільки зображення заміняє тисячі слів, ви знайдете знімки екрана для всіх кроків, які ми щойно пройшли нижче.

© Перейдіть на сторінку rebar3_plugin у GitHub \ Знайдіть і натисніть кнопку з написом «Create Repository from Template»

© Додайте назву та опис для плагіна rebar3 на новій сторінці \ Натисніть кнопку «Create Repository from Template».

© Клонуйте нове сховище \ Запустіть ./bootstrap \ Зафіксуйте та опублікуйте свої зміни.

Що робити, якщо я використовую GitLab або не хочу використовувати дії GitHub, шаблони проблем і плагіни проєкту?

Що ж, це сумно 😢

Але у нас є рішення для вас!

Ви можете використовувати bootstrap з аргументом clean, щоб створити плагін rebar3 без будь-яких додаткових конфігурацій і матеріалів GitHub:

$ ./bootstrap clean
$ tree -a
├── src
│   ├── rebar3_plugin.app.src
│   ├── rebar3_plugin.erl
│   └── rebar3_plugin_prv.erl
└── test
   └── rebar3_plugin_SUITE.erl
├── .gitignore
├── LICENSE
├── README.md
├── CHANGELOG.md
├── rebar.config
├── rebar.lock

Як бачите, вам не потрібно витрачати багато часу на створення наступного чудового плагіна rebar3 за допомогою шаблону rebar3_plugin. То чого ви чекаєте? 😉

Які плагіни вже використовували шаблон rebar3_plugin?

Принаймні:

Звичайно, це не остаточна версія rebar3_plugin. Існує безліч ідей щодо розширення та додавання підтримки додаткових атрибутів командного рядка та інших функціональностей. Як завжди, не соромтеся залишати коментарі або відкриті питання на GitHub для будь-яких ваших ідей, покращень чи думок! Ми також приймаємо Pull Requests!

Посилання

Особлива подяка!

Дякую тобі, Брухо, за твоє чудове наставництво, позитивність та відгуки! 🚀

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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