From 21b96697e8b22e300c7009543fa12db48273afa8 Mon Sep 17 00:00:00 2001 From: Aleksander Nycz Date: Wed, 21 Feb 2024 06:30:14 +0100 Subject: [PATCH] recalc apps vsn --- apps/rebar/src/rebar_relx.erl | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/rebar/src/rebar_relx.erl b/apps/rebar/src/rebar_relx.erl index bfb4674d0..5a0ab2bfe 100644 --- a/apps/rebar/src/rebar_relx.erl +++ b/apps/rebar/src/rebar_relx.erl @@ -72,7 +72,7 @@ do(Provider, State) -> relx:build_relup(Release, ToVsn, UpFromVsn, RelxState); _ -> - parallel_run(Provider, Releases, all_apps(State), RelxState) + parallel_run(Provider, Releases, recalc_vsn(all_apps(State)), RelxState) end, rebar_hooks:run_project_and_app_hooks(Cwd, post, Provider, Providers, State), @@ -299,3 +299,13 @@ opt_spec_list() -> {version, undefined, "version", undefined, "Print relx version"}, {root_dir, $r, "root", string, "The project root directory"}, {relnames, $m, "relnames", string, "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}]. + +-spec recalc_vsn(#{atom() => rlx_app_info:t()}) -> #{atom() => rlx_app_info:t()}. +recalc_vsn(Apps) -> + maps:map( + fun(App, #{dir := Dir} = AppVals) -> + AppFile = filename:join([Dir, "ebin", atom_to_list(App) ++ ".app"]), + {ok, [{application, App, AppOpts}]} = file:consult(AppFile), + {vsn, NewVsn} = lists:keyfind(vsn, 1, AppOpts), + maps:put(vsn, NewVsn, AppVals) + end, Apps).