From 6fb418824358cb47ba73b2d9a951888dbd625bc0 Mon Sep 17 00:00:00 2001 From: Matt Rudder Date: Thu, 6 Mar 2014 10:02:56 -0800 Subject: Added a command line override for the sys_config setting. --- src/relx.erl | 1 + src/rlx_cmd_args.erl | 8 +++++++- src/rlx_prv_config.erl | 7 ++++++- src/rlx_state.erl | 1 + 4 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/relx.erl b/src/relx.erl index 359d47d..79eeae2 100644 --- a/src/relx.erl +++ b/src/relx.erl @@ -203,6 +203,7 @@ opt_spec_list() -> "Provide an app name and a directory to override in the form :"}, {config, $c, "config", {string, ""}, "The path to a config file"}, {overlay_vars, undefined, "overlay_vars", string, "Path to a file of overlay variables"}, + {sys_config, undefined, "sys_config", string, "Path to a file to use for sys.config"}, {system_libs, undefined, "system_libs", string, "Path to dir of Erlang system libs"}, {version, undefined, "version", undefined, "Print relx version"}, {root_dir, $r, "root", string, "The project root directory"}]. diff --git a/src/rlx_cmd_args.erl b/src/rlx_cmd_args.erl index d2402ce..da8f3a0 100644 --- a/src/rlx_cmd_args.erl +++ b/src/rlx_cmd_args.erl @@ -253,7 +253,13 @@ create_disable_default_libs(Opts, Acc) -> {ok, rlx_state:cmd_args()} | relx:error(). create_overlay_vars(Opts, Acc) -> OverlayVars = proplists:get_all_values(overlay_vars, Opts), - create_system_libs(Opts, [{overlay_vars, OverlayVars} | Acc]). + create_sys_config(Opts, [{overlay_vars, OverlayVars} | Acc]). + +-spec create_sys_config([getopt:option()], rlx_state:cmd_args()) -> + {ok, rlx_state:cmd_args()} | relx:error(). +create_sys_config(Opts, Acc) -> + SysConfig = proplists:get_value(sys_config, Opts, undefined), + create_system_libs(Opts, [{sys_config, SysConfig} | Acc]). -spec create_system_libs([getopt:option()], rlx_state:cmd_args()) -> {ok, rlx_state:cmd_args()} | relx:error(). diff --git a/src/rlx_prv_config.erl b/src/rlx_prv_config.erl index 0379c2f..da620be 100644 --- a/src/rlx_prv_config.erl +++ b/src/rlx_prv_config.erl @@ -188,7 +188,12 @@ load_terms({release, {RelName, Vsn}, {erts, ErtsVsn}, load_terms({vm_args, VmArgs}, {ok, State}) -> {ok, rlx_state:vm_args(State, filename:absname(VmArgs))}; load_terms({sys_config, SysConfig}, {ok, State}) -> - {ok, rlx_state:sys_config(State, filename:absname(SysConfig))}; + case rlx_state:sys_config(State) of + undefined -> + {ok, rlx_state:sys_config(State, filename:absname(SysConfig))}; + _ -> + {ok, State} + end; load_terms({output_dir, OutputDir}, {ok, State}) -> {ok, rlx_state:output_dir(State, filename:absname(OutputDir))}; load_terms({overlay_vars, OverlayVars}, {ok, State}) -> diff --git a/src/rlx_state.erl b/src/rlx_state.erl index 2d0493b..0d4051e 100644 --- a/src/rlx_state.erl +++ b/src/rlx_state.erl @@ -129,6 +129,7 @@ new(PropList, Targets) output_dir=proplists:get_value(output_dir, PropList, ""), lib_dirs=[to_binary(Dir) || Dir <- proplists:get_value(lib_dirs, PropList, [])], config_file=proplists:get_value(config, PropList, undefined), + sys_config=proplists:get_value(sys_config, PropList, undefined), dev_mode = proplists:get_value(dev_mode, PropList), actions = Targets, caller = Caller, -- cgit v1.2.3