Skip to main content

rebar.config

{erl_opts, []}.

%% Only rebar3_proper is needed by the build/test gate (compile/xref/dialyzer/
%% eunit/proper). The dev/doc/publish tooling lives in the `dev` profile so the
%% CI matrix never builds it — several of those plugins (e.g. rebar3_ex_doc)
%% require a newer OTP than the library's floor, which broke the old-OTP builds.
%% rebar3_proper itself has no PropEr dependency, so it builds even on OTP 20.
{project_plugins, [
    rebar3_proper
]}.

{shell, [
    %% {config, "config/sys.config"},
    {apps, [hoopdb]}
]}.

{xref_checks, [
    undefined_function_calls,
    undefined_functions,
    locals_not_used,
    deprecated_function_calls,
    deprecated_functions
]}.

{dialyzer, [
    {warnings, [
        unknown,
        unmatched_returns,
        error_handling,
        underspecs
    ]}
]}.

{profiles, [
    {test, [
        {deps, [
            {proper, "1.5.0"}
        ]},
        {eunit_opts, [verbose]},
        {cover_enabled, true},
        {cover_opts, [verbose]},
        {extra_src_dirs, ["test"]}
    ]},
    %% Dev/doc/publish tooling — invoke as `rebar3 as dev <task>` (e.g.
    %% `rebar3 as dev hex publish`, `rebar3 as dev ex_doc`, `rebar3 as dev fmt`,
    %% `rebar3 as dev lint`). Kept out of the default profile so the CI matrix
    %% never builds plugins that need a newer OTP than the library's floor.
    {dev, [
        {plugins, [
            erlfmt,
            rebar3_lint,
            rebar3_ex_doc,
            rebar3_hex,
            coveralls
        ]}
    ]}
]}.

{hex, [{doc, ex_doc}]}.

{ex_doc, [
    {source_url, <<"https://github.com/erlsci/iso8601">>},
    {extras, [<<"README.md">>]},
    {main, <<"readme">>}
]}.

%% Formatting configuration for rebar3_format
{format, [
    {files, ["src/*.erl", "include/*.hrl", "test/*.erl", "examples/*.erl"]},
    {formatter, default_formatter},
    {encoding, utf8},
    {paper, 100},
    {ribbon, 90},
    {break_indent, 4},
    {sub_indent, 2}
]}.

{alias, [
    {test, [
        compile,
        eunit
    ]},
    {coverage, [
        {proper, "-c"},
        {cover, "-v --min_coverage=100"}
    ]},
    {check, [
        compile,
        xref,
        dialyzer,
        eunit,
        coverage
    ]}
]}.