Go to file
2022-08-03 13:56:53 +03:00
.github 🔄 Synced file(s) with valitydev/configurations (#11) 2022-04-04 19:00:06 +03:00
common-templates TD-47: Update templates (#1) 2022-02-02 12:15:10 +03:00
library-templates 🔄 Synced file(s) with valitydev/configurations (#11) 2022-04-04 19:00:06 +03:00
service-templates TD-222: Reuse valitydev/action-deploy-docker@v2 (#14) 2022-08-03 13:56:53 +03:00
.gitignore TD-47: Update templates (#1) 2022-02-02 12:15:10 +03:00
erlang-library.template TD-47: Update templates (#1) 2022-02-02 12:15:10 +03:00
erlang-service.template TD-47: Update templates (#1) 2022-02-02 12:15:10 +03:00
LICENSE 🔄 Synced file(s) with valitydev/configurations (#11) 2022-04-04 19:00:06 +03:00
Makefile TD-47: Update templates (#1) 2022-02-02 12:15:10 +03:00
README.md TD-47: Update templates (#1) 2022-02-02 12:15:10 +03:00
rebar.config TD-47: Update templates (#1) 2022-02-02 12:15:10 +03:00
TODO.md add xref and dialyzer targets 2016-03-01 20:42:15 +03:00

Erlang service template

Шаблон проекта для быстрого старта написания сервиса на Erlang, в комплекте:

  • rebar.config
  • release
  • Jenkinsfile
  • Dockerfile template
  • docker-compose config template
  • documentation stubs
  • common test stub
  • elvis ruleset

Чтобы опробовать в деле, надо всего лишь:

$ mkdir -p ~/.config/rebar3/templates
$ cd $_
$ git clone https://github.com/valitydev/erlang-templates.git .
$ cd ~
$ rebar3 new erlang-service name=snakeoil
$ cd snakeoil

Хозяйке на заметку. Для того, чтобы это всё заработало, необходимы следующие компоненты:

К счастью, теперь все это доступно в dev образе, работать с которым легко и удобно через make:

  • wc- - запустить в dev контейнере
  • wdeps- - запустить в dev контейнере вместе с необходимыми зависимыми сервисами, используя docker-compose.

Чтобы получить описание и поддерживаемые переменные:

$ rebar3 new help erlang-service
erlang-service:
    custom template (~/.config/rebar3/templates/erlang-service.template)
    Description: Erlang OTP Service
    Variables:
        name="myapp" (Name of the service, an application with this name will also be created)
        description="A service that does something" (Short description of purpose of the service)
        version="1" (Initial version string)
        date="2016-01-26"
        datetime="2016-01-26T14:17:58+00:00"
        author_name="Author Name"
        author_email="a.name@corporate.domain"
        copyright_year="2016"
        apps_dir="apps" (Directory where applications will be created if needed)

В случае необходимости доработки в первую очередь обращайтесь к официальной документации.

Внесение изменений

Из-за наличия в коде mustache-плейсхолдеров следующего вида ( file:service-templates/apps/app/test/app_tests_SUITE.erl):

-module({{name}}_tests_SUITE).

Форматирование через erlfmt становится нетривиальным.

Для этого в make format сделана подмена на в большинстве случаев приемлимый для парсинга код через find, xargs и sed ({{placeholder}} -> ___placeholder___) и должна работать для большинства случаев.