From 81369d99a9b6ee5caae6b5e6a5faffb8a65fb588 Mon Sep 17 00:00:00 2001 From: Luis Rascao Date: Sun, 20 Nov 2016 22:19:08 +0000 Subject: Provide a new config directive that allows per-app module exclusion By introducing a new entry in the config file allow excluding specific modules from a given app, they will not be copied onto the final release and their reference removed from the .app file. The new entry takes on the following form: {exclude_modules, [ {App :: atom(), [Module :: atom()]} ]} --- src/rlx_state.erl | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/rlx_state.erl') diff --git a/src/rlx_state.erl b/src/rlx_state.erl index 6974d52..75a5cba 100644 --- a/src/rlx_state.erl +++ b/src/rlx_state.erl @@ -82,7 +82,9 @@ upfrom/1, upfrom/2, format/1, - format/2]). + format/2, + exclude_modules/1, + exclude_modules/2]). -export_type([t/0, @@ -107,6 +109,7 @@ overrides=[] :: [{AppName::atom(), Directory::file:filename()}], skip_apps=[] :: [AppName::atom()], exclude_apps=[] :: [AppName::atom()], + exclude_modules=[] :: [{App::atom(), [Module::atom()]}], debug_info=keep :: keep | strip, configured_releases :: releases(), realized_releases :: releases(), @@ -200,6 +203,15 @@ exclude_apps(#state_t{exclude_apps=Apps}) -> exclude_apps(State, SkipApps) -> State#state_t{exclude_apps=SkipApps}. +-spec exclude_modules(t()) -> [{App::atom(), [Module::atom()]}]. +exclude_modules(#state_t{exclude_modules=Modules}) -> + Modules. + +%% @doc modules to be excluded from the release +-spec exclude_modules(t(), [{App::atom(), [Module::atom()]}]) -> t(). +exclude_modules(State, SkipModules) -> + State#state_t{exclude_modules=SkipModules}. + -spec debug_info(t()) -> keep | strip. debug_info(#state_t{debug_info=DebugInfo}) -> DebugInfo. -- cgit v1.2.3