Current section

Files

Jump to
rebar3_lfe src rebar3_lfe_prv_versions.erl
Raw

src/rebar3_lfe_prv_versions.erl

-module(rebar3_lfe_prv_versions).
-export([init/1,
do/1,
format_error/1]).
-include("rebar3_lfe.hrl").
-define(PROVIDER, versions).
-define(DEPS, [compile]).
%% =============================================================================
%% Plugin API
%% =============================================================================
init(State) ->
Description = "Get various versions",
Provider = providers:create([
{namespace, ?NAMESPACE},
{name, ?PROVIDER},
{module, ?MODULE},
{bare, true},
{deps, ?DEPS},
{example, "rebar3 lfe version"},
{opts, []},
{short_desc, Description},
{desc, info(Description)}
]),
{ok, rebar_state:add_provider(State, Provider)}.
do(State) ->
rebar_paths:set_paths([deps, plugins], State),
Apps = rebar_state:project_apps(State),
lfe_io:format("~p~n", [versions(Apps)]),
{ok, State}.
format_error(Reason) ->
io_lib:format("~p", [Reason]).
%% =============================================================================
%% Internal functions
%% =============================================================================
info(Description) ->
io_lib:format(
"~n~s~n"
"~n"
"Get comprehensive versions of the project, LFE, Erlang, and others.~n",
[Description]).
versions(Apps) ->
rebar_api:debug("Getting versions ...", []),
[{apps, [app_version_data(AppInfo) || AppInfo <- Apps]},
{languages, rebar3_lfe_version:language_versions()},
{tooling, rebar3_lfe_version:rebar_versions()}].
app_version_data(AppInfo) ->
rebar_api:debug("AppInfo: ~p", [AppInfo]),
AppFile = rebar_app_info:app_file(AppInfo),
rebar_api:debug("AppFile: ~p", [AppFile]),
AppDetails = rebar_app_info:app_details(AppInfo),
rebar_api:debug("AppDetails: ~p", [AppDetails]),
AppVersOrig = rebar_app_info:original_vsn(AppInfo),
rebar_api:debug("AppVersOrig: ~p", [AppVersOrig]),
% AppVers = rebar_app_info:vsn(AppInfo),
% rebar_api:debug("AppVers: ~p", [AppVers]),
{rebar3_lfe_utils:app_name(AppInfo), AppVersOrig}.