Packages
rebar3_hex
7.0.2
7.1.0
7.0.11
7.0.10
7.0.9
7.0.8
7.0.7
7.0.6
7.0.5
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.11.9
6.11.8
6.11.7
6.11.6
6.11.5
6.11.4
6.11.3
6.11.2
6.11.1
6.11.0
6.10.3
6.10.2
6.10.1
6.10.0
6.9.6
6.9.5
6.9.4
6.9.3
6.9.2
6.9.1
6.9.0
6.8.0
6.7.0
6.6.0
6.5.0
6.4.0
6.3.0
6.2.0
6.1.0
6.0.0
4.1.0
4.0.0
3.1.0
3.0.0
2.5.1
2.5.0
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.20.0
1.19.0
1.18.0
1.17.0
1.16.0
1.15.0
1.14.0
1.13.0
1.12.0
1.11.0
1.10.0
1.9.1
1.9.0
1.8.1
1.8.0
1.7.2
1.7.1
1.7.0
1.6.3
1.6.1
1.6.0
1.5.0
1.4.0
1.3.0
1.2.0
1.1.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Hex.pm plugin for rebar3
Current section
Files
Jump to
Current section
Files
src/rebar3_hex_version.erl
%% @private
%%% ===================================================================
%%% Version utils
%%% ===================================================================
-module(rebar3_hex_version).
-export([parse/1, increment/2, format/1]).
-type increment_type() :: patch | minor | major.
-spec parse(string() | binary()) -> {ok, verl:version_t()} | {error, term()}.
parse(Version) when is_list(Version) ->
parse(rebar_utils:to_binary(Version));
parse(Version) when is_binary(Version) ->
verl:parse(Version).
-spec increment(increment_type(), verl:version_t()) -> verl:version_t().
increment(patch, #{major := Maj, minor := Min, patch := Patch} = Version) ->
Version#{major => Maj, minor => Min, patch => Patch + 1};
increment(minor, #{major := Maj, minor := Min} = Version) ->
Version#{major => Maj, minor => Min + 1, patch => 0};
increment(major, #{major := Maj} = Version) ->
Version#{major => Maj + 1, minor => 0, patch => 0}.
-spec format(verl:version_t()) -> binary().
format(#{major := Maj, minor := Min, patch := Patch}) ->
MajBin = integer_to_binary(Maj),
MinBin = integer_to_binary(Min),
PatchBin = integer_to_binary(Patch),
DotBin = <<".">>,
<<MajBin/binary, DotBin/binary, MinBin/binary, DotBin/binary, PatchBin/binary>>.