%%% Packages rebar.hrl features and macros into a more generic API %%% that can be used by plugin builders. -module(rebar_api). -include("rebar.hrl"). -include_lib("providers/include/providers.hrl"). -export([abort/0, abort/2, console/2, debug/2, info/2, warn/2, error/2, expand_env_variable/3, get_arch/0, wordsize/0, add_deps_to_path/1, restore_code_path/1, processing_base_dir/1, ssl_opts/1]). -export_type([rebar_dict/0, rebar_digraph/0]). %%%%%%%%%%%%%%%%%%%%%%% %%% Error reporting %%% %%%%%%%%%%%%%%%%%%%%%%% %% @doc Interrupts program flow -spec abort() -> no_return(). abort() -> ?FAIL. %% @doc like {@link error/2}, except it also raises an %% exception to interrupt program flow. -spec abort(string(), list()) -> no_return(). abort(Str, Args) -> ?ABORT(Str, Args). %% @doc Prints to the console, including a newline console(Str, Args) -> ?CONSOLE(Str, Args). %% @doc logs with severity `debug' debug(Str, Args) -> ?DEBUG(Str, Args). %% @doc logs with severity `info' info(Str, Args) -> ?INFO(Str, Args). %% @doc logs with severity `warn' warn(Str, Args) -> ?WARN(Str, Args). %% @doc logs with severity `error' error(Str, Args) -> ?ERROR(Str, Args). %% %% Given env. variable FOO we want to expand all references to %% it in InStr. References can have two forms: $FOO and ${FOO} %% The end of form $FOO is delimited with whitespace or eol %% expand_env_variable(InStr, VarName, RawVarValue) -> rebar_utils:expand_env_variable(InStr, VarName, RawVarValue). get_arch() -> rebar_utils:get_arch(). wordsize() -> rebar_utils:wordsize(). %% Add deps to the code path add_deps_to_path(State) -> code:add_pathsa(rebar_state:code_paths(State, all_deps)). %% Revert to only having the beams necessary for running rebar3 and plugins in the path restore_code_path(State) -> rebar_utils:cleanup_code_path(rebar_state:code_paths(State, default)). processing_base_dir(State) -> rebar_dir:processing_base_dir(State). ssl_opts(Url) -> rebar_pkg_resource:ssl_opts(Url).