diff options
author | Fred Hebert <mononcqc@ferd.ca> | 2018-12-05 16:22:20 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-05 16:22:20 -0500 |
commit | f564d1638c748b3e8f4c32eeded6260b116e310b (patch) | |
tree | 0e8cdeb741477a08485b6928be0e510bc2d42e68 /src | |
parent | f4cc17c621e7b6459cc011f5d2361cfb4e11001a (diff) | |
parent | 079216cf17f0f1cb35ae18f8353af296e0c8dacf (diff) |
Merge pull request #1969 from sg2342/fix_compiler_mib
implement mib_first_files support in rebar_compiler_mib
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar_compiler_mib.erl | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/src/rebar_compiler_mib.erl b/src/rebar_compiler_mib.erl index c731c27..499976d 100644 --- a/src/rebar_compiler_mib.erl +++ b/src/rebar_compiler_mib.erl @@ -22,13 +22,44 @@ context(AppInfo) -> out_mappings => Mappings}. needed_files(_, FoundFiles, _, AppInfo) -> - FirstFiles = [], + RebarOpts = rebar_app_info:opts(AppInfo), + MibFirstConf = rebar_opts:get(RebarOpts, mib_first_files, []), + valid_mib_first_conf(MibFirstConf), + Dir = rebar_app_info:dir(AppInfo), + MibFirstFiles = [filename:join(Dir, File) || File <- MibFirstConf], %% Remove first files from found files - RestFiles = [Source || Source <- FoundFiles, not lists:member(Source, FirstFiles)], + RestFiles = [Source || Source <- FoundFiles, not lists:member(Source, MibFirstFiles)], Opts = rebar_opts:get(rebar_app_info:opts(AppInfo), mib_opts, []), - {{FirstFiles, Opts}, {RestFiles, Opts}}. + {{MibFirstFiles, Opts}, {RestFiles, Opts}}. + +valid_mib_first_conf(FileList) -> + Strs = filter_file_list(FileList), + case rebar_utils:is_list_of_strings(Strs) of + true -> true; + false -> ?ABORT("An invalid file list (~p) was provided as part of your mib_first_files directive", + [FileList]) + end. + +filter_file_list(FileList) -> + Atoms = lists:filter( fun(X) -> is_atom(X) end, FileList), + case Atoms of + [] -> + FileList; + _ -> + atoms_in_mib_first_files_warning(Atoms), + lists:filter( fun(X) -> not(is_atom(X)) end, FileList) + end. + +atoms_in_mib_first_files_warning(Atoms) -> + W = "You have provided atoms as file entries in mib_first_files; " + "mib_first_files only expects lists of filenames as strings. " + "The following MIBs (~p) may not work as expected and it is advised " + "that you change these entires to string format " + "(e.g., \"mibs/SOME-MIB.mib\") ", + ?WARN(W, [Atoms]). + dependencies(_, _, _) -> []. |