|
|
@ -39,6 +39,9 @@ |
|
|
|
to_list/1, |
|
|
|
|
|
|
|
compilers/1, compilers/2, |
|
|
|
prepend_compilers/2, append_compilers/2, |
|
|
|
|
|
|
|
project_builders/1, add_project_builder/3, |
|
|
|
|
|
|
|
create_resources/2, |
|
|
|
resources/1, resources/2, add_resource/2, |
|
|
@ -69,6 +72,7 @@ |
|
|
|
all_deps = [] :: [rebar_app_info:t()], |
|
|
|
|
|
|
|
compilers = [] :: [{compiler_type(), extension(), extension(), compile_fun()}], |
|
|
|
project_builders = [] :: [{rebar_app_info:project_type(), module()}], |
|
|
|
resources = [], |
|
|
|
providers = [], |
|
|
|
allow_provider_overrides = false :: boolean()}). |
|
|
@ -402,9 +406,29 @@ warn_old_resource(ResourceModule) -> |
|
|
|
compilers(#state_t{compilers=Compilers}) -> |
|
|
|
Compilers. |
|
|
|
|
|
|
|
prepend_compilers(State=#state_t{compilers=Compilers}, NewCompilers) -> |
|
|
|
State#state_t{compilers=NewCompilers++Compilers}. |
|
|
|
|
|
|
|
append_compilers(State=#state_t{compilers=Compilers}, NewCompilers) -> |
|
|
|
State#state_t{compilers=Compilers++NewCompilers}. |
|
|
|
|
|
|
|
compilers(State, Compilers) -> |
|
|
|
State#state_t{compilers=Compilers}. |
|
|
|
|
|
|
|
project_builders(#state_t{project_builders=ProjectBuilders}) -> |
|
|
|
ProjectBuilders. |
|
|
|
|
|
|
|
add_project_builder(State=#state_t{project_builders=ProjectBuilders}, Type, Module) -> |
|
|
|
_ = code:ensure_loaded(Module), |
|
|
|
case erlang:function_exported(Module, build, 1) of |
|
|
|
true -> |
|
|
|
State#state_t{project_builders=[{Type, Module} | ProjectBuilders]}; |
|
|
|
false -> |
|
|
|
?WARN("Unable to add project builder for type ~s, required function ~s:build/1 not found.", |
|
|
|
[Type, Module]), |
|
|
|
State |
|
|
|
end. |
|
|
|
|
|
|
|
create_resources(Resources, State) -> |
|
|
|
lists:foldl(fun(R, StateAcc) -> |
|
|
|
add_resource(StateAcc, R) |
|
|
|