浏览代码

Add --relvsn and --relname to rebar3 shell

Allows to select one of many releases conditionally.
Default behaviour should be unchanged from existing one.

Can filter on only the version or only the name, or both.
pull/2011/head
Fred Hebert 6 年前
父节点
当前提交
85f5c645fa
共有 1 个文件被更改,包括 27 次插入6 次删除
  1. +27
    -6
      src/rebar_prv_shell.erl

+ 27
- 6
src/rebar_prv_shell.erl 查看文件

@ -78,6 +78,12 @@ init(State) ->
"shell. (E.g. --apps app1,app2,app3) Defaults " "shell. (E.g. --apps app1,app2,app3) Defaults "
"to rebar.config {shell, [{apps, Apps}]} or " "to rebar.config {shell, [{apps, Apps}]} or "
"relx apps if not specified."}, "relx apps if not specified."},
{relname, $r, "relname", atom,
"Name of the release to use as a template for the "
"shell session"},
{relvsn, $v, "relvsn", string,
"Version of the release to use for the shell "
"session"},
{start_clean, undefined, "start-clean", boolean, {start_clean, undefined, "start-clean", boolean,
"Cancel any applications in the 'apps' list " "Cancel any applications in the 'apps' list "
"or release."}, "or release."},
@ -335,15 +341,30 @@ find_apps_rebar(State) ->
-spec find_apps_relx(rebar_state:t()) -> no_value | list(). -spec find_apps_relx(rebar_state:t()) -> no_value | list().
find_apps_relx(State) -> find_apps_relx(State) ->
case lists:keyfind(release, 1, rebar_state:get(State, relx, [])) of
{_, _, Apps} ->
{Opts, _} = rebar_state:command_parsed_args(State),
RelxOpts = rebar_state:get(State, relx, []),
{Defname, Defvsn} = debug_get_value(default_release, RelxOpts,
{undefined, undefined},
"Found default release from config"),
Relname = debug_get_value(relname, Opts, Defname,
"Found relname from command line option"),
Relvsn = debug_get_value(relvsn, Opts, Defvsn,
"Found relvsn from command line option"),
Releases = [Rel || Rel <- rebar_state:get(State, relx, []),
is_tuple(Rel), element(1, Rel) =:= release,
tuple_size(Rel) =:= 3 orelse tuple_size(Rel) =:= 4,
{Name, Vsn} <- [element(2, Rel)],
Relname == undefined orelse Name == Relname,
Relvsn == undefined orelse Vsn == Relvsn],
case Releases of
[] ->
no_value;
[{_, _, Apps}|_] ->
?DEBUG("Found shell apps from relx.", []), ?DEBUG("Found shell apps from relx.", []),
Apps; Apps;
{_, _, Apps, _} ->
[{_, _, Apps, _}|_] ->
?DEBUG("Found shell apps from relx.", []), ?DEBUG("Found shell apps from relx.", []),
Apps;
false ->
no_value
Apps
end. end.
load_apps(Apps) -> load_apps(Apps) ->

正在加载...
取消
保存