summaryrefslogtreecommitdiff
path: root/priv/templates
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2015-07-01 10:20:11 -0400
committerFred Hebert <mononcqc@ferd.ca>2015-07-01 10:20:11 -0400
commitff1079f678e0bb633ca8bc8eb96f8f7b4efd33a7 (patch)
tree68d0f49672ab05f749eb574d68aa686ff509b486 /priv/templates
parent619e41b916d1d121623b410a21d48e3106035788 (diff)
parentac0a8d40cdaab1a9999446afb895c1e677c6ef9c (diff)
Merge pull request #573 from tsloughter/plugins_tpl
update plugin template to separate plugin init and providers
Diffstat (limited to 'priv/templates')
-rw-r--r--priv/templates/plugin.erl31
-rw-r--r--priv/templates/plugin.template1
-rw-r--r--priv/templates/provider.erl32
3 files changed, 36 insertions, 28 deletions
diff --git a/priv/templates/plugin.erl b/priv/templates/plugin.erl
index 018dd0e..c6e5e40 100644
--- a/priv/templates/plugin.erl
+++ b/priv/templates/plugin.erl
@@ -1,33 +1,8 @@
-module('{{name}}').
--behaviour(provider).
--export([init/1, do/1, format_error/1]).
+-export([init/1]).
--define(PROVIDER, '{{name}}').
--define(DEPS, [app_discovery]).
-
-%% ===================================================================
-%% Public API
-%% ===================================================================
-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
init(State) ->
- Provider = providers:create([
- {name, ?PROVIDER}, % The 'user friendly' name of the task
- {module, ?MODULE}, % The module implementation of the task
- {bare, true}, % The task can be run by the user, always true
- {deps, ?DEPS}, % The list of dependencies
- {example, "rebar3 {{name}}"}, % How to use the plugin
- {opts, []}, % list of options understood by the plugin
- {short_desc, "{{desc}}"},
- {desc, "{{desc}}"}
- ]),
- {ok, rebar_state:add_provider(State, Provider)}.
-
-
--spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
-do(State) ->
- {ok, State}.
-
--spec format_error(any()) -> iolist().
-format_error(Reason) ->
- io_lib:format("~p", [Reason]).
+ {ok, State1} = '{{name}}_prv':init(State),
+ {ok, State1}.
diff --git a/priv/templates/plugin.template b/priv/templates/plugin.template
index 811be0b..c0e36de 100644
--- a/priv/templates/plugin.template
+++ b/priv/templates/plugin.template
@@ -4,6 +4,7 @@
{desc, "A rebar plugin", "Short description of the plugin's purpose"}
]}.
{template, "plugin.erl", "{{name}}/src/{{name}}.erl"}.
+{template, "provider.erl", "{{name}}/src/prv_{{name}}_prv.erl"}.
{template, "otp_lib.app.src", "{{name}}/src/{{name}}.app.src"}.
{template, "rebar.config", "{{name}}/rebar.config"}.
{template, "gitignore", "{{name}}/.gitignore"}.
diff --git a/priv/templates/provider.erl b/priv/templates/provider.erl
new file mode 100644
index 0000000..669df83
--- /dev/null
+++ b/priv/templates/provider.erl
@@ -0,0 +1,32 @@
+-module('{{name}}_prv').
+
+-export([init/1, do/1, format_error/1]).
+
+-define(PROVIDER, '{{name}}').
+-define(DEPS, [app_discovery]).
+
+%% ===================================================================
+%% Public API
+%% ===================================================================
+-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
+init(State) ->
+ Provider = providers:create([
+ {name, ?PROVIDER}, % The 'user friendly' name of the task
+ {module, ?MODULE}, % The module implementation of the task
+ {bare, true}, % The task can be run by the user, always true
+ {deps, ?DEPS}, % The list of dependencies
+ {example, "rebar3 {{name}}"}, % How to use the plugin
+ {opts, []}, % list of options understood by the plugin
+ {short_desc, "{{desc}}"},
+ {desc, "{{desc}}"}
+ ]),
+ {ok, rebar_state:add_provider(State, Provider)}.
+
+
+-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
+do(State) ->
+ {ok, State}.
+
+-spec format_error(any()) -> iolist().
+format_error(Reason) ->
+ io_lib:format("~p", [Reason]).