diff options
-rw-r--r-- | src/relcool.app.src | 2 | ||||
-rw-r--r-- | src/relcool.app.src.script | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/src/relcool.app.src b/src/relcool.app.src index e2ce1e3..c2877a4 100644 --- a/src/relcool.app.src +++ b/src/relcool.app.src @@ -20,6 +20,6 @@ {application, relcool, [{description, "Release assembler for Erlang/OTP Releases"}, - {vsn, "0.0.1"}, + {vsn, git}, {modules, []}, {applications, [kernel, stdlib, getopt, depsolver, erlware_commons]}]}. diff --git a/src/relcool.app.src.script b/src/relcool.app.src.script new file mode 100644 index 0000000..381e7dc --- /dev/null +++ b/src/relcool.app.src.script @@ -0,0 +1,22 @@ +%% -*- mode: Erlang; erlang-indent-level: 4; indent-tabs-mode: nil; fill-column: 80 -*- + +[{application, AppName, Details0}] = CONFIG, + +%% Get the tag timestamp and minimal ref from the system. The +%% timestamp is really important from an ordering perspective. +{ok, RawRef} = rebar_utils:sh("git log -n 1 --pretty=format:'%ct.%h\n' .", []), +{ok, RawTag} = rebar_utils:sh("git describe --always --abbrev=0 --tags " + "`git log -n 1 --pretty=format:%h .`", []), + +%% Cleanup the tag and the Ref information. Basically leading 'v's and +%% whitespace needs to go away. +Tag = re:replace(RawTag, "(^v)|\\s", "", [global]), +Ref = re:replace(RawRef, "\\s", "", [global]), + +%% Create the valid [semver](http://semver.org) version from the tag +Vsn = erlang:binary_to_list(erlang:iolist_to_binary([Tag, "+build.", Ref])), + +%% Replace the old version with the new one +Details1 = lists:keyreplace(vsn, 1, Details0, {vsn, Vsn}), + +[{application, AppName, Details1}]. |