summaryrefslogtreecommitdiff
path: root/src/rebar_resource.erl
blob: f0490f88811f9b8dbf4705f469e5d035f5fb8fa7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 et
-module(rebar_resource).

-export([]).

-export_types([resource/0
              ,type/0
              ,location/0
              ,ref/0]).

-type resource() :: {type(), location(), ref()}.
-type type() :: atom().
-type location() :: string().
-type ref() :: any().

-ifdef(have_callback_support).

%% In the case where R14 or lower is being used to compile the system
%% we need to export a behaviour info
-export([behaviour_info/1]).

-spec behaviour_info(atom()) -> [{atom(), arity()}] | undefined.
behaviour_info(callbacks) ->
    [{lock, 2},
     {download, 2},
     {needs_update,2}];
behaviour_info(_) ->
    undefined.

-else.

-callback lock(file:filename_all(), tuple()) ->  rebar_resource:resource().
-callback download(file:filename_all(), tuple()) ->
    {tarball, file:filename_all()} | {ok, any()} | {error, any()}.
-callback needs_update(file:filename_all(), tuple()) ->
    {tarball, file:filename_all()} | {ok, any()} | {error, any()}.

-endif.