Packages

An Erlang library to create and connect an arbitrary cluster of nodes

Current section

Files

Jump to
braid src braid_net.erl
Raw

src/braid_net.erl

% @doc Task to provide info to connect to braidnet instance
-module(braid_net).
-behaviour(cli).
-export([cli/0]).
% API
-export([init/0]).
-export([setup/1]).
-export([ensure/0]).
-export([get/1]).
-record(setting, {
name,
title,
description
}).
%--- Macros --------------------------------------------------------------------
-define(SETTINGS, [
#setting{
name = braidnet_domain,
title = "BraidNet Domain",
description = "Hostname to connect to the braidnet service"
},
#setting{
name = braidnet_access_token,
title = "Authorization Token",
description = "Access Token for the braidnet REST API"
}
]).
%--- API -----------------------------------------------------------------------
init() ->
braid_table:ensure_table(?MODULE, []).
cli() ->
#{
commands => #{
"setup" => #{help => "settigs to connect to a braidnet cloud"}
}
}.
setup(_) ->
[check(T) || T <- ?SETTINGS].
ensure() ->
[ensure(T) || T <- ?SETTINGS].
get(Token) ->
braid_table:get(?MODULE, Token).
%--- Internal ------------------------------------------------------------------
check(#setting{name = Name, title = Title, description = Description}) ->
check(Name, Title, Description).
check(Token, Name, Text) ->
case braid_table:find(?MODULE, Token) of
{ok, Value} ->
braid_cli_util:print("~s:\n ~s", [Name, Value]),
case braid_cli_util:confirm("Do you want to replace it? [y/N]:") of
true -> aquire(Token, Name, Text);
false -> ok
end;
error ->
aquire(Token, Name, Text)
end.
aquire(Token, Name, Text) ->
braid_cli_util:print(Text),
Value = braid_cli_util:input(Name ++ ":"),
braid_table:set(?MODULE, Token, Value).
ensure(#setting{name = Name, title = Title}) ->
case braid_table:find(?MODULE, Name) of
{ok, Val} ->
application:set_env(braid, Name, Val),
ok;
error ->
braid_cli_util:abort(
"~s is missing. Please run:\n\n"
" braid setup\n"
, [Title]),
erlang:halt(1)
end.