{erl_opts, [debug_info, warnings_as_errors]}.

{deps, [
    {telemetry, "~> 1.3"}
]}.

{project_plugins, [
    erlfmt,
    rebar3_hex,
    rebar3_ex_doc,
    rebar3_lint,
    rebar3_hank,
    {rebar3_mutate, "~> 0.4.0"},
    covertool,
    {rebar3_audit, "~> 0.2"},
    {rebar3_sbom,
        {git, "https://github.com/Taure/rebar3_sbom.git", {branch, "feat/include-otp-components"}}}
]}.

{erlfmt, [write]}.

{hank, [
    {ignore, [
        {"test/**", [unnecessary_function_arguments]},
        {"src/seki_otel.erl", [unnecessary_function_arguments]},
        {"src/seki_adaptive.erl", [unnecessary_function_arguments]},
        {"src/seki_backend.erl", [unused_callbacks]}
    ]}
]}.

{cover_enabled, true}.
{cover_export_enabled, true}.
{covertool, [{coverdata_files, ["eunit.coverdata"]}]}.

{profiles, [
    {test, [
        {erl_opts, [nowarn_export_all]},
        {deps, [
            {proper, "1.4.0"}
        ]}
    ]}
]}.

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

{xref_ignores, [
    {otel_ctx, get_current, 0},
    {otel_span, add_event, 3},
    {otel_tracer, current_span_ctx, 0}
]}.

{dialyzer, [
    {warnings, [
        error_handling,
        unmatched_returns
    ]},
    {exclude_mods, [seki_otel]}
]}.

{hex, [{doc, #{provider => ex_doc}}]}.

{ex_doc, [
    {source_url, <<"https://github.com/Taure/seki">>},
    {extras, [
        <<"README.md">>,
        <<"LICENSE.md">>,
        <<"guides/getting-started.md">>,
        <<"guides/rate-limiting.md">>,
        <<"guides/circuit-breaker.md">>,
        <<"guides/nova-integration.md">>,
        <<"guides/phoenix-integration.md">>,
        <<"guides/advanced-patterns.md">>
    ]},
    {main, <<"readme">>},
    {groups_for_extras, [
        {<<"Guides">>, [
            <<"guides/getting-started.md">>,
            <<"guides/rate-limiting.md">>,
            <<"guides/circuit-breaker.md">>,
            <<"guides/nova-integration.md">>,
            <<"guides/phoenix-integration.md">>,
            <<"guides/advanced-patterns.md">>
        ]}
    ]},
    {groups_for_modules, [
        {<<"Core API">>, [
            seki,
            seki_breaker,
            seki_bulkhead,
            seki_retry,
            seki_deadline
        ]},
        {<<"Rate Limiting">>, [
            seki_algorithm,
            seki_backend,
            seki_backend_ets,
            seki_backend_pg,
            seki_limiter_registry,
            seki_pg_gossip
        ]},
        {<<"Advanced Patterns">>, [
            seki_adaptive,
            seki_shed,
            seki_hedge,
            seki_health
        ]},
        {<<"Instrumentation">>, [
            seki_otel
        ]}
    ]}
]}.
