Packages

Upgrade tools for Erlang/OTP. Contains rebar3 plugin and escript.

Current section

Files

Jump to
erlup src erlup_vsn.erl
Raw

src/erlup_vsn.erl

%% @copyright 2016 Hinagiku Soranoba All Rights Reserved.
%%
%% @doc Display the release vsn.
%%
-module(erlup_vsn).
-include("erlup.hrl").
%%----------------------------------------------------------------------------------------------------------------------
%% Exported API
%%----------------------------------------------------------------------------------------------------------------------
-export([
do/2
]).
%%----------------------------------------------------------------------------------------------------------------------
%% 'provider' Callback API
%%----------------------------------------------------------------------------------------------------------------------
-export([init/1, do/1, format_error/1]).
%%----------------------------------------------------------------------------------------------------------------------
%% Exported Functions
%%----------------------------------------------------------------------------------------------------------------------
%% @doc Display the release vsn.
-spec do(file:filename(), erlup_state:t()) -> ok.
do(Dir, _State) ->
case erlup_utils:lookup_current_vsn(Dir) of
{ok, CurrentVsn} ->
io:format("~s~n", [CurrentVsn]);
{error, Reason} ->
?throw(Reason)
end.
%%----------------------------------------------------------------------------------------------------------------------
%% 'provider' Callback Functions
%%----------------------------------------------------------------------------------------------------------------------
%% @private
-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
init(State) ->
Provider = providers:create([
{name, vsn},
{namespace, erlup},
{module, ?MODULE},
{bare, true},
{deps, []},
{opts, erlup_rebar3:opts("vsn")},
{short_desc, "Display the release vsn"}
]),
{ok, rebar_state:add_provider(State, Provider)}.
%% @private
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
do(State) ->
erlup_rebar3:do("vsn", State).
%% @private
-spec format_error(iodata()) -> iolist().
format_error(Reason) ->
io_lib:format("~s", [Reason]).