|
|
@ -33,10 +33,16 @@ init(State) -> |
|
|
|
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}. |
|
|
|
do(State) -> |
|
|
|
{Args, _} = rebar_state:command_parsed_args(State), |
|
|
|
Plugin = proplists:get_value(plugin, Args, <<"">>), |
|
|
|
upgrade(Plugin, State). |
|
|
|
case proplists:get_value(plugin, Args, none) of |
|
|
|
none -> |
|
|
|
?PRV_ERROR(no_plugin_arg); |
|
|
|
Plugin -> |
|
|
|
upgrade(Plugin, State) |
|
|
|
end. |
|
|
|
|
|
|
|
-spec format_error(any()) -> iolist(). |
|
|
|
format_error(no_plugin_arg) -> |
|
|
|
io_lib:format("Must give an installed plugin to upgrade as an argument", []); |
|
|
|
format_error({not_found, Plugin}) -> |
|
|
|
io_lib:format("Plugin to upgrade not found: ~s", [Plugin]); |
|
|
|
format_error(Reason) -> |
|
|
@ -44,15 +50,12 @@ format_error(Reason) -> |
|
|
|
|
|
|
|
upgrade(Plugin, State) -> |
|
|
|
Profiles = rebar_state:current_profiles(State), |
|
|
|
Dep = ec_lists:search(fun(Profile) -> |
|
|
|
Plugins = rebar_state:get(State, {plugins, Profile}, []), |
|
|
|
case find(list_to_atom(Plugin), Plugins) of |
|
|
|
false -> |
|
|
|
not_found; |
|
|
|
P -> |
|
|
|
{ok, P} |
|
|
|
end |
|
|
|
end, Profiles), |
|
|
|
case find_plugin(Plugin, Profiles, State) of |
|
|
|
not_found -> |
|
|
|
Dep = find_plugin(Plugin, [global], State); |
|
|
|
Dep -> |
|
|
|
Dep |
|
|
|
end, |
|
|
|
|
|
|
|
case Dep of |
|
|
|
not_found -> |
|
|
@ -76,6 +79,17 @@ upgrade(Plugin, State) -> |
|
|
|
{ok, State} |
|
|
|
end. |
|
|
|
|
|
|
|
find_plugin(Plugin, Profiles, State) -> |
|
|
|
ec_lists:search(fun(Profile) -> |
|
|
|
Plugins = rebar_state:get(State, {plugins, Profile}, []), |
|
|
|
case find(list_to_atom(Plugin), Plugins) of |
|
|
|
false -> |
|
|
|
not_found; |
|
|
|
P -> |
|
|
|
{ok, P} |
|
|
|
end |
|
|
|
end, Profiles). |
|
|
|
|
|
|
|
find(_Plugin, []) -> |
|
|
|
false; |
|
|
|
find(Plugin, [Plugin | _Plugins]) -> |
|
|
|