diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar.erl | 15 | ||||
-rw-r--r-- | src/rebar_app_discover.erl | 4 | ||||
-rw-r--r-- | src/rebar_app_info.erl | 27 | ||||
-rw-r--r-- | src/rebar_state.erl | 7 |
4 files changed, 43 insertions, 10 deletions
diff --git a/src/rebar.erl b/src/rebar.erl index 48a3ac6..3560772 100644 --- a/src/rebar.erl +++ b/src/rebar.erl @@ -30,7 +30,8 @@ run/2, help/0, parse_args/1, - version/0]). + version/0, + log_level/1]). -include("rebar.hrl"). @@ -69,7 +70,6 @@ main(Args) -> %% Erlang-API entry point run(BaseConfig, Commands) -> _ = application:load(rebar), - ok = rebar_log:init(api, BaseConfig), run_aux(BaseConfig, Commands). %% ==================================================================== @@ -156,12 +156,12 @@ init_config({Options, _NonOptArgs}) -> init_config1(BaseConfig) -> %% Determine the location of the rebar executable; important for pulling %% resources out of the escript - ScriptName = filename:absname(escript:script_name()), - BaseConfig1 = rebar_state:set(BaseConfig, escript, ScriptName), - ?DEBUG("Rebar location: ~p\n", [ScriptName]), + %ScriptName = filename:absname(escript:script_name()), + %BaseConfig1 = rebar_state:set(BaseConfig, escript, ScriptName), + %?DEBUG("Rebar location: ~p\n", [ScriptName]), %% Note the top-level directory for reference AbsCwd = filename:absname(rebar_utils:get_cwd()), - rebar_state:set(BaseConfig1, base_dir, AbsCwd). + rebar_state:set(BaseConfig, base_dir, AbsCwd). run_aux(BaseConfig, Commands) -> %% Make sure crypto is running @@ -176,9 +176,10 @@ run_aux(BaseConfig, Commands) -> [Command | Args] = Commands, CommandAtom = list_to_atom(Command), - BaseConfig1 = init_config1(BaseConfig), + %BaseConfig1 = init_config1(BaseConfig), %% Process each command, resetting any state between each one + BaseConfig1 = rebar_state:set(BaseConfig, base_dir, filename:absname(rebar_state:dir(BaseConfig))), {ok, Providers} = application:get_env(rebar, providers), BaseConfig2 = rebar_state:create_logic_providers(Providers, BaseConfig1), rebar_core:process_command(rebar_state:command_args(BaseConfig2, Args), CommandAtom), diff --git a/src/rebar_app_discover.erl b/src/rebar_app_discover.erl index 12193b5..b256889 100644 --- a/src/rebar_app_discover.erl +++ b/src/rebar_app_discover.erl @@ -6,7 +6,9 @@ find_apps/2]). do(State, LibDirs) -> - Apps = find_apps(LibDirs, all), + BaseDir = rebar_state:dir(State), + Dirs = [filename:join(BaseDir, LibDir) || LibDir <- LibDirs], + Apps = find_apps(Dirs, all), ProjectDeps = rebar_state:deps_names(State), lists:foldl(fun(AppInfo, StateAcc) -> rebar_state:project_apps(StateAcc, rebar_app_info:deps(AppInfo, ProjectDeps)) diff --git a/src/rebar_app_info.erl b/src/rebar_app_info.erl index 698ebd7..8f0cc69 100644 --- a/src/rebar_app_info.erl +++ b/src/rebar_app_info.erl @@ -4,6 +4,7 @@ new/1, new/2, new/3, + new/4, name/1, name/2, config/1, @@ -22,7 +23,9 @@ dir/1, dir/2, source/1, - source/2]). + source/2, + valid/1, + valid/2]). -export_type([t/0]). @@ -34,7 +37,8 @@ app_details :: list(), deps=[] :: list(), dir :: file:name(), - source :: string() | undefined}). + source :: string() | undefined, + valid :: boolean()}). %%============================================================================ %% types @@ -69,6 +73,15 @@ new(AppName, Vsn, Dir) -> original_vsn=Vsn, dir=Dir}}. +%% @doc build a complete version of the app info with all fields set. +-spec new(atom() | binary() | string(), string(), file:name(), list()) -> + {ok, t()}. +new(AppName, Vsn, Dir, Deps) -> + {ok, #app_info_t{name=ec_cnv:to_binary(AppName), + original_vsn=Vsn, + dir=Dir, + deps=Deps}}. + -spec name(t()) -> atom(). name(#app_info_t{name=Name}) -> Name. @@ -160,3 +173,13 @@ source(AppInfo=#app_info_t{}, Source) -> -spec source(t()) -> string(). source(#app_info_t{source=Source}) -> Source. + +-spec valid(t()) -> boolean(). +valid(#app_info_t{dir=Dir, valid=undefined}) -> + true; +valid(#app_info_t{valid=Valid}) -> + Valid. + +-spec valid(t(), boolean()) -> t(). +valid(AppInfo=#app_info_t{}, Valid) -> + AppInfo#app_info_t{valid=Valid}. diff --git a/src/rebar_state.erl b/src/rebar_state.erl index a1aefab..fa9aa96 100644 --- a/src/rebar_state.erl +++ b/src/rebar_state.erl @@ -4,6 +4,7 @@ get/2, get/3, set/3, command_args/1, command_args/2, + dir/1, dir/2, set_skip_dir/2, is_skip_dir/2, reset_skip_dirs/1, create_logic_providers/2, @@ -106,6 +107,12 @@ command_args(#state_t{command_args=CmdArgs}) -> command_args(State, CmdArgs) -> State#state_t{command_args=CmdArgs}. +dir(#state_t{dir=Dir}) -> + Dir. + +dir(State=#state_t{}, Dir) -> + State#state_t{dir=filename:absname(Dir)}. + deps_names(State) -> Deps = rebar_state:get(State, deps, []), lists:map(fun(Dep) when is_tuple(Dep) -> |