summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rebar.erl15
-rw-r--r--src/rebar_app_discover.erl4
-rw-r--r--src/rebar_app_info.erl27
-rw-r--r--src/rebar_state.erl7
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) ->