{erl_opts, [
debug_info,
warnings_as_errors,
warn_missing_spec
]}.
{deps, [
{hackney, "4.2.1"},
{livery, "0.2.5"}
]}.
{profiles, [
{test, [
{erl_opts, [
debug_info,
nowarn_export_all,
nowarn_missing_spec
]}
]}
]}.
{xref_checks, [
undefined_function_calls,
undefined_functions,
locals_not_used,
deprecated_function_calls,
deprecated_functions
]}.
{dialyzer, [
{warnings, [unknown]},
{plt_apps, all_deps}
]}.
{cover_enabled, true}.
{cover_opts, [verbose]}.
{project_plugins, [
{erlfmt, "1.7.0"},
{rebar3_lint, "4.1.1"},
rebar3_ex_doc
]}.
{erlfmt, [
write,
{files, [
"{src,include,test}/**/*.{hrl,erl,app.src}",
"rebar.config"
]}
]}.
{ex_doc, [
{source_url, <<"https://github.com/benoitc/livery_s3">>},
{extras, [
{"README.md", #{title => <<"Overview">>}},
{"docs/features.md", #{title => <<"Features">>}},
{"CHANGELOG.md", #{title => <<"Changelog">>}}
]},
{main, <<"readme">>},
{groups_for_modules, [
{<<"Public API">>, [livery_s3]},
{<<"Internals">>, [
livery_s3_sigv4,
livery_s3_uri,
livery_s3_xml
]}
]}
]}.
{hex, [{doc, #{provider => ex_doc}}]}.
{elvis, [
#{
dirs => ["src"],
filter => "*.erl",
rules => [
%% livery_s3 is the intentional public facade (all S3 verbs
%% live behind one module), like livery_client.
{elvis_style, god_modules, #{ignore => [livery_s3]}},
%% The configured client adapter is dispatched dynamically.
{elvis_style, invalid_dynamic_call, #{ignore => [livery_s3]}},
%% Internal helper types kept module-private on purpose.
{elvis_style, export_used_types, disable},
{elvis_style, no_spec_with_records, disable},
{elvis_style, no_macros, disable},
%% Distinct request/response shapes that share a case structure;
%% keeping them apart is clearer.
{elvis_style, dont_repeat_yourself, #{ignore => [livery_s3]}},
%% xmerl SAX event tags (startElement/endElement) are an external
%% API shape and are necessarily camelCase.
{elvis_style, atom_naming_convention, #{ignore => [livery_s3_xml]}},
{elvis_text_style, line_length, #{limit => 100}}
],
ruleset => erl_files
},
#{
dirs => ["."],
filter => "rebar.config",
ruleset => rebar_config
}
]}.