{erl_opts, [
    debug_info,
    warn_export_vars,
    warn_shadow_vars,
    warn_obsolete_guard,
    {platform_define, "^[0-9]+", namespaced_types}
]}.

{minimum_otp_vsn, "26"}.

{deps, []}.

{profiles, [
    {test, [
        {deps, [
            {proper, "1.4.0"}
        ]},
        {erl_opts, [debug_info, nowarn_export_all]}
    ]},
    {interop_client, [
        {escript_main_app, quic},
        {escript_name, quic_interop_client},
        {escript_emu_args, "%%! -escript main quic_interop_client\n"}
    ]},
    {interop_server, [
        {escript_main_app, quic},
        {escript_name, quic_interop_server},
        {escript_emu_args, "%%! -escript main quic_interop_server\n"}
    ]}
]}.

{project_plugins, [
    rebar3_proper,
    rebar3_ex_doc
]}.

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

{ex_doc, [
    {source_url, <<"https://github.com/benoitc/erlang_quic">>},
    {extras, [
        <<"README.md">>,
        <<"docs/DESIGN.md">>
    ]},
    {main, <<"readme">>},
    {groups_for_modules, [
        {<<"Public API">>, [quic, quic_listener]},
        {<<"Connection">>, [quic_connection, quic_stream]},
        {<<"Protocol">>, [quic_packet, quic_frame, quic_varint]},
        {<<"Cryptography">>, [quic_crypto, quic_tls, quic_keys, quic_aead, quic_hkdf]},
        {<<"Flow Control">>, [quic_flow, quic_cc, quic_loss, quic_ack]},
        {<<"Session">>, [quic_ticket]}
    ]}
]}.

{dialyzer, [
    {warnings, [
        error_handling,
        unknown
    ]},
    {plt_apps, all_deps},
    {plt_extra_apps, [crypto, ssl]}
]}.

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

%% Ignore unused exports prepared for future use
{xref_ignores, [
    {quic_listener, register_cid, 3},
    {quic_listener, unregister_cid, 2},
    {quic_ticket, create_ticket, 5},
    {quic_ticket, build_new_session_ticket, 1}
]}.

{cover_enabled, true}.
{cover_opts, [verbose]}.
