summaryrefslogtreecommitdiff
path: root/src/rebar_appups.erl
diff options
context:
space:
mode:
authorSteven Gravell <steve.gravell@smarkets.com>2011-06-30 22:50:56 +0100
committerSteven Gravell <steve.gravell@smarkets.com>2011-07-01 18:04:32 +0100
commit0f5e3932920969dba70ae8d7edcdfa97bb472c28 (patch)
treea35a9c4443b8e89653ff6c3d54fe8d1133058ef7 /src/rebar_appups.erl
parent3e4138537f089c8c1a5e5f9173603569aa012eca (diff)
downloadrebar-0f5e3932920969dba70ae8d7edcdfa97bb472c28.tar.gz
look for new and old versions in the target parent
The target_dir config in reltool allows you to put your release in a directory other than in ./NAME, so we should look in the parent directory of that to find the new and old versions instead of simply looking in ./ Move untaring and retaring into a temporary path instead of in ./ to prevent name collisions with "releases" and "lib" that might exist already. Having a subdirectory rel/releases/ can be useful.
Diffstat (limited to 'src/rebar_appups.erl')
-rw-r--r--src/rebar_appups.erl20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/rebar_appups.erl b/src/rebar_appups.erl
index 871c426..b702e92 100644
--- a/src/rebar_appups.erl
+++ b/src/rebar_appups.erl
@@ -40,11 +40,15 @@
'generate-appups'(_Config, ReltoolFile) ->
%% Get the old release path
- OldVerPath = rebar_rel_utils:get_previous_release_path(),
+ ReltoolConfig = rebar_rel_utils:load_config(ReltoolFile),
+ TargetParentDir = rebar_rel_utils:get_target_parent_dir(ReltoolConfig),
+
+ OldVerPath = filename:join([TargetParentDir,
+ rebar_rel_utils:get_previous_release_path()]),
%% Get the new and old release name and versions
{Name, _Ver} = rebar_rel_utils:get_reltool_release_info(ReltoolFile),
- NewVerPath = filename:join([".", Name]),
+ NewVerPath = filename:join([TargetParentDir, Name]),
{NewName, NewVer} = rebar_rel_utils:get_rel_release_info(Name, NewVerPath),
{OldName, OldVer} = rebar_rel_utils:get_rel_release_info(Name, OldVerPath),
@@ -60,7 +64,7 @@
%% Get a list of any appup files that exist in the new release
NewAppUpFiles = rebar_utils:find_files(
- filename:join([NewName, "lib"]), "^.*.appup$"),
+ filename:join([NewVerPath, "lib"]), "^.*.appup$"),
%% Convert the list of appup files into app names
AppUpApps = [file_to_name(File) || File <- NewAppUpFiles],
@@ -69,7 +73,7 @@
UpgradeApps = genappup_which_apps(Upgraded, AppUpApps),
%% Generate appup files for upgraded apps
- generate_appup_files(Name, OldVerPath, UpgradeApps),
+ generate_appup_files(NewVerPath, OldVerPath, UpgradeApps),
ok.
@@ -124,10 +128,10 @@ genappup_which_apps(UpgradedApps, [First|Rest]) ->
genappup_which_apps(Apps, []) ->
Apps.
-generate_appup_files(Name, OldVerPath, [{App, {OldVer, NewVer}}|Rest]) ->
- OldEbinDir = filename:join([".", OldVerPath, "lib",
+generate_appup_files(NewVerPath, OldVerPath, [{App, {OldVer, NewVer}}|Rest]) ->
+ OldEbinDir = filename:join([OldVerPath, "lib",
atom_to_list(App) ++ "-" ++ OldVer, "ebin"]),
- NewEbinDir = filename:join([".", Name, "lib",
+ NewEbinDir = filename:join([NewVerPath, "lib",
atom_to_list(App) ++ "-" ++ NewVer, "ebin"]),
{AddedFiles, DeletedFiles, ChangedFiles} = beam_lib:cmp_dirs(NewEbinDir,
@@ -147,7 +151,7 @@ generate_appup_files(Name, OldVerPath, [{App, {OldVer, NewVer}}|Rest]) ->
OldVer, Inst, OldVer])),
?CONSOLE("Generated appup for ~p~n", [App]),
- generate_appup_files(Name, OldVerPath, Rest);
+ generate_appup_files(NewVerPath, OldVerPath, Rest);
generate_appup_files(_, _, []) ->
?CONSOLE("Appup generation complete~n", []).