{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
]}
]}.