Current section

Files

Jump to
elvis_core rebar.config.script
Raw

rebar.config.script

%% -*- erlang -*-
%% Adds every project markdown extra (including doc_rules/**) to ex_doc so HexDocs
%% resolves links from README / RULES, and groups sidebar entries by category.
%% helper funs
SetOpt = fun(Key, Value, Opts) ->
lists:keystore(Key, 1, lists:keydelete(Key, 1, Opts), {Key, Value})
end,
InDir = fun(Dir) ->
fun(F) ->
lists:prefix(Dir, F)
end
end,
AsBin = fun(ListOfCharLists) ->
[list_to_binary(CharList) || CharList <- ListOfCharLists]
end,
RootExtras = [
"README.md",
"RULES.md",
"MIGRATION.md",
"CHANGELOG.md",
"CONTRIBUTING.md",
"SECURITY.md",
"CODE_OF_CONDUCT.md",
"LICENSE"
],
DocRuleFiles = lists:sort(filelib:wildcard("doc_rules/**/*.md")),
StyleFiles = lists:filter(InDir("doc_rules/elvis_style/"), DocRuleFiles),
TextStyleFiles = lists:filter(InDir("doc_rules/elvis_text_style/"), DocRuleFiles),
ProjectRuleFiles = lists:filter(InDir("doc_rules/elvis_project/"), DocRuleFiles),
GitignoreFiles = lists:filter(InDir("doc_rules/elvis_gitignore/"), DocRuleFiles),
GroupsForExtras = [
{<<"Overview">>, AsBin(RootExtras)},
{<<"Style rules">>, AsBin(StyleFiles)},
{<<"Text style rules">>, AsBin(TextStyleFiles)},
{<<"Project rules">>, AsBin(ProjectRuleFiles)},
{<<"Gitignore rules">>, AsBin(GitignoreFiles)}
],
AllExtras = RootExtras ++ DocRuleFiles,
ExDoc0 = proplists:get_value(ex_doc, CONFIG, []),
ExDoc1 = SetOpt(extras, AllExtras, ExDoc0),
ExDoc2 = SetOpt(groups_for_extras, GroupsForExtras, ExDoc1),
lists:keystore(ex_doc, 1, CONFIG, {ex_doc, ExDoc2}).