浏览代码

add relup provider and update relx

pull/545/head
Tristan Sloughter 9 年前
父节点
当前提交
b85d827c80
共有 7 个文件被更改,包括 77 次插入10 次删除
  1. +1
    -0
      bootstrap
  2. +1
    -1
      rebar.config
  3. +1
    -1
      rebar.lock
  4. +1
    -0
      src/rebar.app.src
  5. +2
    -3
      src/rebar_prv_release.erl
  6. +67
    -0
      src/rebar_prv_relup.erl
  7. +4
    -5
      src/rebar_prv_tar.erl

+ 1
- 0
bootstrap 查看文件

@ -232,6 +232,7 @@ setup_env() ->
application:load(rebar),
{ok, Providers} = application:get_env(rebar, providers),
Providers1 = Providers -- [rebar_prv_release,
rebar_prv_relup,
rebar_prv_tar],
application:set_env(rebar, providers, Providers1).

+ 1
- 1
rebar.config 查看文件

@ -6,7 +6,7 @@
{providers, "1.4.1"},
{getopt, "0.8.2"},
{bbmustache, "1.0.1"},
{relx, "2.1.0"}]}.
{relx, "3.0.0"}]}.
{escript_name, rebar3}.
{escript_emu_args, "%%! +sbtu +A0\n"}.

+ 1
- 1
rebar.lock 查看文件

@ -1,5 +1,5 @@
[{<<"bbmustache">>,{pkg,<<"bbmustache">>,<<"1.0.1">>},0},
{<<"providers">>,{pkg,<<"providers">>,<<"1.4.1">>},0},
{<<"erlware_commons">>,{pkg,<<"erlware_commons">>,<<"0.12.0">>},0},
{<<"relx">>,{pkg,<<"relx">>,<<"2.1.0">>},0},
{<<"relx">>,{pkg,<<"relx">>,<<"3.0.0">>},0},
{<<"getopt">>,{pkg,<<"getopt">>,<<"0.8.2">>},0}].

+ 1
- 0
src/rebar.app.src 查看文件

@ -48,6 +48,7 @@
rebar_prv_plugins,
rebar_prv_plugins_upgrade,
rebar_prv_release,
rebar_prv_relup,
rebar_prv_report,
rebar_prv_shell,
rebar_prv_tar,

+ 2
- 3
src/rebar_prv_release.erl 查看文件

@ -32,7 +32,6 @@ init(State) ->
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
do(State) ->
Caller = rebar_state:get(State, caller, api),
Options = rebar_state:command_args(State),
DepsDir = rebar_dir:deps_dir(State),
ProjectAppDirs = lists:delete(".", ?DEFAULT_PROJECT_APP_DIRS),
@ -48,12 +47,12 @@ do(State) ->
[] ->
relx:main([{lib_dirs, LibDirs}
,{output_dir, OutputDir}
,{caller, Caller}], AllOptions);
,{caller, api}], AllOptions);
Config ->
relx:main([{lib_dirs, LibDirs}
,{config, lists:reverse(Config)}
,{output_dir, OutputDir}
,{caller, Caller}], AllOptions)
,{caller, api}], AllOptions)
end,
rebar_hooks:run_all_hooks(Cwd, post, ?PROVIDER, Providers, State),
{ok, State}

+ 67
- 0
src/rebar_prv_relup.erl 查看文件

@ -0,0 +1,67 @@
%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 et
-module(rebar_prv_relup).
-behaviour(provider).
-export([init/1,
do/1,
format_error/1]).
-include("rebar.hrl").
-define(PROVIDER, relup).
-define(DEPS, [release]).
%% ===================================================================
%% Public API
%% ===================================================================
-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
init(State) ->
Provider = providers:create([{name, ?PROVIDER},
{module, ?MODULE},
{bare, true},
{deps, ?DEPS},
{example, "rebar3 relup"},
{short_desc, "Create relup of releases."},
{desc, "Create relup of releases."},
{opts, relx:opt_spec_list()}]),
State1 = rebar_state:add_provider(State, Provider),
{ok, State1}.
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
do(State) ->
Options = rebar_state:command_args(State),
DepsDir = rebar_dir:deps_dir(State),
ProjectAppDirs = lists:delete(".", ?DEFAULT_PROJECT_APP_DIRS),
LibDirs = rebar_utils:filtermap(fun ec_file:exists/1,
[?DEFAULT_CHECKOUTS_DIR, DepsDir | ProjectAppDirs]),
OutputDir = filename:join(rebar_dir:base_dir(State), ?DEFAULT_RELEASE_DIR),
AllOptions = string:join(["relup" | Options], " "),
Cwd = rebar_state:dir(State),
Providers = rebar_state:providers(State),
rebar_hooks:run_all_hooks(Cwd, pre, ?PROVIDER, Providers, State),
try
case rebar_state:get(State, relx, []) of
[] ->
relx:main([{lib_dirs, LibDirs}
,{output_dir, OutputDir}
,{caller, api}], AllOptions);
Config ->
relx:main([{lib_dirs, LibDirs}
,{config, lists:reverse(Config)}
,{output_dir, OutputDir}
,{caller, api}], AllOptions)
end,
rebar_hooks:run_all_hooks(Cwd, post, ?PROVIDER, Providers, State),
{ok, State}
catch
throw:T ->
{error, {rlx_prv_release, T}}
end.
-spec format_error(any()) -> iolist().
format_error(Reason) ->
io_lib:format("~p", [Reason]).

+ 4
- 5
src/rebar_prv_tar.erl 查看文件

@ -12,7 +12,7 @@
-include("rebar.hrl").
-define(PROVIDER, tar).
-define(DEPS, [compile]).
-define(DEPS, [release]).
%% ===================================================================
%% Public API
@ -32,14 +32,13 @@ init(State) ->
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
do(State) ->
Caller = rebar_state:get(State, caller, api),
Options = rebar_state:command_args(State),
DepsDir = rebar_dir:deps_dir(State),
ProjectAppDirs = lists:delete(".", ?DEFAULT_PROJECT_APP_DIRS),
LibDirs = rebar_utils:filtermap(fun ec_file:exists/1,
[?DEFAULT_CHECKOUTS_DIR, DepsDir | ProjectAppDirs]),
OutputDir = filename:join(rebar_dir:base_dir(State), ?DEFAULT_RELEASE_DIR),
AllOptions = string:join(["release", "tar" | Options], " "),
AllOptions = string:join(["tar" | Options], " "),
Cwd = rebar_state:dir(State),
Providers = rebar_state:providers(State),
rebar_hooks:run_all_hooks(Cwd, pre, ?PROVIDER, Providers, State),
@ -47,12 +46,12 @@ do(State) ->
[] ->
relx:main([{lib_dirs, LibDirs}
,{output_dir, OutputDir}
,{caller, Caller}], AllOptions);
,{caller, api}], AllOptions);
Config ->
relx:main([{lib_dirs, LibDirs}
,{config, lists:reverse(Config)}
,{output_dir, OutputDir}
,{caller, Caller}], AllOptions)
,{caller, api}], AllOptions)
end,
rebar_hooks:run_all_hooks(Cwd, post, ?PROVIDER, Providers, State),
{ok, State}.

正在加载...
取消
保存