diff options
author | Dave Smith <dizzyd@dizzyd.com> | 2012-10-30 21:26:54 -0600 |
---|---|---|
committer | Dave Smith <dizzyd@dizzyd.com> | 2012-10-30 21:26:54 -0600 |
commit | 3ee3a7cd9eabf5dc862cb68669dab5ad4088d64c (patch) | |
tree | 5dddb6213f7d7af98332293a11e33ae8371abdba | |
parent | fa5c8f44ac1335f3ebd4710dac29c7e9f001496e (diff) | |
parent | 08c510130e18faaa1b0e0cf5a9222cc24ee4908a (diff) |
Merge remote-tracking branch 'basho/master'
-rw-r--r-- | src/rebar_require_vsn.erl | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/rebar_require_vsn.erl b/src/rebar_require_vsn.erl index 327f75c..83cb79d 100644 --- a/src/rebar_require_vsn.erl +++ b/src/rebar_require_vsn.erl @@ -67,4 +67,33 @@ check_versions(Config) -> nomatch -> ?ABORT("OTP release ~s does not match required regex ~s\n", [erlang:system_info(otp_release), OtpRegex]) + end, + + case rebar_config:get(Config, require_min_otp_vsn, undefined) of + undefined -> ?DEBUG("Min OTP version unconfigured~n", []); + MinOtpVsn -> + {MinMaj, MinMin} = version_tuple(MinOtpVsn, "configured"), + {OtpMaj, OtpMin} = version_tuple(erlang:system_info(otp_release), + "OTP Release"), + case {OtpMaj, OtpMin} >= {MinMaj, MinMin} of + true -> + ?DEBUG("~s satisfies the requirement for vsn ~s~n", + [erlang:system_info(otp_release), + MinOtpVsn]); + false -> + ?ABORT("OTP release ~s or later is required, you have: ~s~n", + [MinOtpVsn, + erlang:system_info(otp_release)]) + end + end. + +version_tuple(OtpRelease, Type) -> + case re:run(OtpRelease, "R(\\d+)B?-?(\\d+)?", [{capture, all, list}]) of + {match, [_Full, Maj, Min]} -> + {list_to_integer(Maj), list_to_integer(Min)}; + {match, [_Full, Maj]} -> + {list_to_integer(Maj), 0}; + nomatch -> + ?ABORT("Cannot parse ~s version string: ~s~n", + [Type, OtpRelease]) end. |