%% Common project erlang options. {erl_opts, [ % mandatory debug_info, warnings_as_errors, warn_export_all, warn_missing_spec, warn_untyped_record, warn_export_vars, % by default warn_unused_record, warn_bif_clash, warn_obsolete_guard, warn_unused_vars, warn_shadow_vars, warn_unused_import, warn_unused_function, warn_deprecated_function % at will % bin_opt_info % no_auto_import % warn_missing_spec_all ]}. %% Common project dependencies. {deps, [ {cowboy, "2.8.0"}, {jsx, "3.0.0"}, {jesse, "1.5.5"}, {gun, {git, "https://github.com/ninenines/gun.git", {branch, "master"} }}, {genlib, {git, "https://github.com/rbkmoney/genlib.git", {branch, "master"} } }, {thrift, {git, "https://github.com/rbkmoney/thrift_erlang.git", {branch, "master"} } }, {woody, {git, "https://github.com/rbkmoney/woody_erlang.git", {branch, "master"} } }, {woody_user_identity, {git, "https://github.com/rbkmoney/woody_erlang_user_identity.git", {branch, "master"} } }, {bouncer_proto, {git, "git@github.com:rbkmoney/bouncer-proto.git", {branch, "master"} } }, {org_management_proto, {git, "git@github.com:rbkmoney/org-management-proto.git", {branch, "master"} } }, {scoper, {git, "https://github.com/rbkmoney/scoper.git", {branch, "master"} } }, {erl_health, {git, "https://github.com/rbkmoney/erlang-health.git", {branch, "master"} } }, % Production-only deps. % Defined here for the sake of rebar-locking. {recon, "2.5.1"}, {logger_logstash_formatter, {git, "https://github.com/rbkmoney/logger_logstash_formatter.git", {branch, "master"} } }, {how_are_you, {git, "https://github.com/rbkmoney/how_are_you.git", {branch, "master"} } } ]}. %% Helpful plugins. {plugins, [ rebar3_lint ]}. %% Linter config. {elvis, [ #{ dirs => ["src"], filter => "*.erl", ruleset => erl_files, rules => [ {elvis_style, invalid_dynamic_call, #{ignore => [ % Uses thrift reflection through `struct_info/1`. bouncer_context_v1 ]}} ] }, #{ dirs => ["test"], filter => "*.erl", ruleset => erl_files, rules => [ % We want to use `ct:pal/2` and friends in test code. {elvis_style, no_debug_call, disable}, % Assert macros can trigger use of ignored binding, yet we want them for better % readability. {elvis_style, used_ignored_variable, disable}, % Tests are usually more comprehensible when a bit more verbose. {elvis_style, dont_repeat_yourself, #{min_complexity => 20}}, {elvis_style, god_modules, #{ignore => [ct_gun_event_h]}} ] }, #{ dirs => ["."], filter => "Makefile", ruleset => makefiles }, #{ dirs => ["."], filter => "rebar.config", rules => [ {elvis_style, line_length, #{limit => 100, skip_comments => false}}, {elvis_style, no_tabs}, {elvis_style, no_trailing_whitespace} ] }, #{ dirs => ["src"], filter => "*.app.src", rules => [ {elvis_style, line_length, #{limit => 100, skip_comments => false}}, {elvis_style, no_tabs}, {elvis_style, no_trailing_whitespace} ] } ]}. {elvis_output_format, colors}. %% XRef checks {xref_checks, [ undefined_function_calls, undefined_functions, deprecated_functions_calls, deprecated_functions ]}. % at will % {xref_warnings, true}. %% Tests {cover_enabled, true}. %% Relx configuration {relx, [ {release, {bouncer , "0.1.0"}, [ {recon , load}, % tools for introspection {runtime_tools, load}, % debugger {tools , load}, % profiler {logger_logstash_formatter, load}, % logger formatter how_are_you, bouncer ]}, {sys_config, "./config/sys.config"}, {vm_args, "./config/vm.args"}, {dev_mode, true}, {include_erts, false}, {extended_start_script, true} ]}. %% Dialyzer static analyzing {dialyzer, [ {warnings, [ % mandatory unmatched_returns, error_handling, race_conditions, unknown ]}, {plt_apps, all_deps} ]}. {profiles, [ {prod, [ {relx, [ {dev_mode, false}, {include_erts, true}, {overlay, []} ]} ]}, {test, [ {cover_enabled, true}, {deps, []} ]} ]}.