diff options
author | Fred Hebert <mononcqc@ferd.ca> | 2019-04-16 20:10:52 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-16 20:10:52 -0400 |
commit | 45aaba22b405b222fd28e46c625748a99a53cff3 (patch) | |
tree | ba1ef877ddf38a6f5844146e47f4e2f789ab911b /src | |
parent | 14928247cda69d953e673ed6b5feb6ff679a2dfc (diff) | |
parent | cb881390dce42dab63f18dba59eddd1e4990b969 (diff) |
Merge pull request #2035 from ankhers/lint_app_file
Add basic linting for .app file
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar_app_utils.erl | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/rebar_app_utils.erl b/src/rebar_app_utils.erl index 0ea6ad8..91c095c 100644 --- a/src/rebar_app_utils.erl +++ b/src/rebar_app_utils.erl @@ -101,6 +101,7 @@ validate_application_info(AppInfo, AppDetail) -> undefined -> false; AppFile -> + lint_detail(AppDetail, AppFile), case proplists:get_value(modules, AppDetail) of undefined -> ?PRV_ERROR({module_list, AppFile}); @@ -109,6 +110,36 @@ validate_application_info(AppInfo, AppDetail) -> end end. +-spec lint_detail(list(), file:filename_all()) -> ok. +lint_detail(AppDetail, AppFile) -> + lint_description(AppDetail, AppFile), + lint_applications(AppDetail, AppFile). + +-spec lint_description(list(), file:filename_all()) -> ok. +lint_description(AppDetail, AppFile) -> + case proplists:get_value(description, AppDetail, "") of + "" -> ?WARN("~p is missing description entry", [AppFile]); + _ -> ok + end. + +-spec lint_applications(list(), file:filename_all()) -> ok. +lint_applications(AppDetail, AppFile) -> + case proplists:get_value(applications, AppDetail) of + undefined -> ?WARN("~p is missing applications entry", [AppFile]); + AppList when is_list(AppList) -> + case lists:member(kernel, AppList) of + false -> + ?WARN("~p is missing kernel from applications list", [AppFile]); + true -> ok + end, + case lists:member(stdlib, AppList) of + false -> + ?WARN("~p is missing stdlib from applications list", [AppFile]); + true -> ok + end; + _ -> ?WARN("~p requires a list for applications value", [AppFile]) + end. + %% @doc parses all dependencies from the root of the project -spec parse_deps(Dir, Deps, State, Locks, Level) -> [rebar_app_info:t()] when Dir :: file:filename(), |