From 6cadb335be5b4446db7933a2f5e05a72ccaefdcf Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Sun, 28 Sep 2014 19:17:07 -0500 Subject: add upgrade provider --- src/rebar_prv_upgrade.erl | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/rebar_prv_upgrade.erl (limited to 'src/rebar_prv_upgrade.erl') diff --git a/src/rebar_prv_upgrade.erl b/src/rebar_prv_upgrade.erl new file mode 100644 index 0000000..6722948 --- /dev/null +++ b/src/rebar_prv_upgrade.erl @@ -0,0 +1,49 @@ +%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ts=4 sw=4 et + +-module(rebar_prv_upgrade). + +-behaviour(rebar_provider). + +-export([init/1, + do/1]). + +-include("rebar.hrl"). + +-define(PROVIDER, upgrade). +-define(DEPS, [lock]). + +%% =================================================================== +%% Public API +%% =================================================================== + +-spec init(rebar_state:t()) -> {ok, rebar_state:t()}. +init(State) -> + State1 = rebar_state:add_provider(State, #provider{name = ?PROVIDER, + provider_impl = ?MODULE, + bare = false, + deps = ?DEPS, + example = "rebar upgrade cowboy", + short_desc = "Upgrade dependency.", + desc = "", + opts = []}), + {ok, State1}. + +-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}. +do(State) -> + case rebar_state:command_args(State) of + [Name] -> + ?INFO("Updating ~s~n", [Name]), + Locks = rebar_state:get(State, locks, []), + case lists:keyfind(ec_cnv:to_binary(Name), 1, Locks) of + {_, _, _, Level} -> + Deps = rebar_state:get(State, deps), + Dep = lists:keyfind(list_to_atom(Name), 1, Deps), + rebar_prv_install_deps:handle_deps(State, [Dep], {true, ec_cnv:to_binary(Name), Level}), + {ok, State}; + false -> + {error, io_lib:format("No such dependency ~s~n", [Name])} + end; + [] -> + {error, "No package given to upgrade."} + end. -- cgit v1.1 From b37a5ae611aaf6b84a046fbe716f40c2aa8c75d8 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Fri, 3 Oct 2014 06:33:33 -0500 Subject: move providers to separate app --- src/rebar_prv_upgrade.erl | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/rebar_prv_upgrade.erl') diff --git a/src/rebar_prv_upgrade.erl b/src/rebar_prv_upgrade.erl index 6722948..1c6abf7 100644 --- a/src/rebar_prv_upgrade.erl +++ b/src/rebar_prv_upgrade.erl @@ -3,7 +3,7 @@ -module(rebar_prv_upgrade). --behaviour(rebar_provider). +-behaviour(provider). -export([init/1, do/1]). @@ -19,14 +19,14 @@ -spec init(rebar_state:t()) -> {ok, rebar_state:t()}. init(State) -> - State1 = rebar_state:add_provider(State, #provider{name = ?PROVIDER, - provider_impl = ?MODULE, - bare = false, - deps = ?DEPS, - example = "rebar upgrade cowboy", - short_desc = "Upgrade dependency.", - desc = "", - opts = []}), + State1 = rebar_state:add_provider(State, providers:create([{name, ?PROVIDER}, + {module, ?MODULE}, + {bare, false}, + {deps, ?DEPS}, + {example, "rebar upgrade cowboy"}, + {short_desc, "Upgrade dependency."}, + {desc, ""}, + {opts, []}])), {ok, State1}. -spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}. -- cgit v1.1 From b20680304d02a10babff15ff69a78a816077fa3c Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Fri, 10 Oct 2014 11:47:41 -0500 Subject: split options up by task --- src/rebar_prv_upgrade.erl | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) (limited to 'src/rebar_prv_upgrade.erl') diff --git a/src/rebar_prv_upgrade.erl b/src/rebar_prv_upgrade.erl index 1c6abf7..cbeec98 100644 --- a/src/rebar_prv_upgrade.erl +++ b/src/rebar_prv_upgrade.erl @@ -19,31 +19,32 @@ -spec init(rebar_state:t()) -> {ok, rebar_state:t()}. init(State) -> - State1 = rebar_state:add_provider(State, providers:create([{name, ?PROVIDER}, - {module, ?MODULE}, - {bare, false}, - {deps, ?DEPS}, - {example, "rebar upgrade cowboy"}, - {short_desc, "Upgrade dependency."}, - {desc, ""}, - {opts, []}])), + State1 = + rebar_state:add_provider(State, + providers:create([{name, ?PROVIDER}, + {module, ?MODULE}, + {bare, false}, + {deps, ?DEPS}, + {example, "rebar upgrade cowboy"}, + {short_desc, "Upgrade dependency."}, + {desc, ""}, + {opts, [ + {package, undefined, undefined, string, "Package to upgrade."} + ]}])), {ok, State1}. -spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}. do(State) -> - case rebar_state:command_args(State) of - [Name] -> - ?INFO("Updating ~s~n", [Name]), - Locks = rebar_state:get(State, locks, []), - case lists:keyfind(ec_cnv:to_binary(Name), 1, Locks) of - {_, _, _, Level} -> - Deps = rebar_state:get(State, deps), - Dep = lists:keyfind(list_to_atom(Name), 1, Deps), - rebar_prv_install_deps:handle_deps(State, [Dep], {true, ec_cnv:to_binary(Name), Level}), - {ok, State}; - false -> - {error, io_lib:format("No such dependency ~s~n", [Name])} - end; - [] -> - {error, "No package given to upgrade."} + {Args, _} = rebar_state:command_parsed_args(State), + Name = proplists:get_value(package, Args), + ?INFO("Updating ~s~n", [Name]), + Locks = rebar_state:get(State, locks, []), + case lists:keyfind(ec_cnv:to_binary(Name), 1, Locks) of + {_, _, _, Level} -> + Deps = rebar_state:get(State, deps), + Dep = lists:keyfind(list_to_atom(Name), 1, Deps), + rebar_prv_install_deps:handle_deps(State, [Dep], {true, ec_cnv:to_binary(Name), Level}), + {ok, State}; + _ -> + {error, io_lib:format("No such dependency ~s~n", [Name])} end. -- cgit v1.1 From 1dce2d36cc75263db279abd7f282772ce0f0f3e6 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Wed, 22 Oct 2014 12:03:49 -0500 Subject: add format_error/2 provider callback to providers --- src/rebar_prv_upgrade.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/rebar_prv_upgrade.erl') diff --git a/src/rebar_prv_upgrade.erl b/src/rebar_prv_upgrade.erl index cbeec98..1668e1c 100644 --- a/src/rebar_prv_upgrade.erl +++ b/src/rebar_prv_upgrade.erl @@ -6,7 +6,8 @@ -behaviour(provider). -export([init/1, - do/1]). + do/1, + format_error/2]). -include("rebar.hrl"). @@ -48,3 +49,7 @@ do(State) -> _ -> {error, io_lib:format("No such dependency ~s~n", [Name])} end. + +-spec format_error(any(), rebar_state:t()) -> {iolist(), rebar_state:t()}. +format_error(Reason, State) -> + {io_lib:format("~p", [Reason]), State}. -- cgit v1.1