Clean up and simplify {vsn, VCS} support

This commit is contained in:
Dave Smith 2011-02-18 10:59:57 +01:00 committed by Tuncer Ayaz
parent 01a7473dac
commit 6056c63eed

View file

@ -89,13 +89,7 @@ app_applications(AppFile) ->
app_vsn(AppFile) -> app_vsn(AppFile) ->
case load_app_file(AppFile) of case load_app_file(AppFile) of
{ok, _, AppInfo} -> {ok, _, AppInfo} ->
case get_value(vsn, AppInfo, AppFile) of vcs_vsn(get_value(vsn, AppInfo, AppFile));
git -> vcs_vsn(git);
hg -> vcs_vsn(hg);
bzr -> vcs_vsn(bzr);
svn -> vcs_vsn(svn);
Version -> Version
end;
{error, Reason} -> {error, Reason} ->
?ABORT("Failed to extract vsn from ~s: ~p\n", ?ABORT("Failed to extract vsn from ~s: ~p\n",
[AppFile, Reason]) [AppFile, Reason])
@ -132,11 +126,16 @@ get_value(Key, AppInfo, AppFile) ->
end. end.
vcs_vsn(Vcs) -> vcs_vsn(Vcs) ->
Cmd = vcs_vsn_cmd(Vcs), case vcs_vsn_cmd(Vcs) of
{unknown, VsnString} ->
VsnString;
Cmd ->
{ok, VsnString} = rebar_utils:sh(Cmd, [{use_stdout, false}]), {ok, VsnString} = rebar_utils:sh(Cmd, [{use_stdout, false}]),
string:strip(VsnString, right, $\n). string:strip(VsnString, right, $\n)
end.
vcs_vsn_cmd(git) -> "git describe --always --tags"; vcs_vsn_cmd(git) -> "git describe --always --tags";
vcs_vsn_cmd(hg) -> "hg identify -i"; vcs_vsn_cmd(hg) -> "hg identify -i";
vcs_vsn_cmd(bzr) -> "bzr revno"; vcs_vsn_cmd(bzr) -> "bzr revno";
vcs_vsn_cmd(svn) -> "svnversion". vcs_vsn_cmd(svn) -> "svnversion";
vcs_vsn_cmd(Version) -> {unknown, Version}.