blob: ef2c1fa02c3bf63c51e0a6865226da8a1bab636c [file] [log] [blame]
%%% Copyright (c) 2007- Facebook
%%% Distributed under the Thrift Software License
%%%
%%% See accompanying file LICENSE or visit the Thrift site at:
%%% http://developers.facebook.com/thrift/
-module(thrift).
-export([start/0, stop/0, config/1, config/2, reconfig/1]).
-include("thrift.hrl").
%%%
%%% behavior definition
%%%
start() ->
application:start(thrift).
stop() ->
application:stop(thrift).
%%%
%%% configuration
%%%
config(Item) ->
config(?MODULE, Item).
config(App, Item) ->
case application:get_env(App, Item) of
{ok, Value} ->
Value;
undefined ->
?ERROR("configuration for ~p is unavailable", [Item]),
unconfigured_item,
exit({missing_config, App, Item})
end.
reconfig(Config) ->
BFName = filename:basename(Config, ".config"),
FName = filename:join(filename:dirname(Config),
BFName ++ ".config"),
case file:consult(FName) of
{error, R={_,_,_}} ->
{error, file_error, file:format_error(R)};
{error, Posix} ->
{error, file_error, Posix};
{ok, [List]} when is_list(List) ->
reconfig1(List)
end.
reconfig1([]) ->
ok;
reconfig1([{App, List}|Tl]) ->
reconfig2(List, App, 0),
reconfig1(Tl).
reconfig2([], App, Count) ->
?INFO("application ~p reconfigured: ~p keys updated", [App, Count]),
ok;
reconfig2([{Par, Val}|Tl], App, Count) ->
application:set_env(App, Par, Val),
reconfig2(Tl, App, Count+1).