From f65804c1b92f032afd4e09b7f01ea48de446ac6d Mon Sep 17 00:00:00 2001 From: Damir Dzeko Date: Thu, 6 Jul 2006 22:52:17 +0000 Subject: [PATCH] r100: _cp_customize, with function dependancies --- functions.sh | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/functions.sh b/functions.sh index 84af780..2ab04ff 100644 --- a/functions.sh +++ b/functions.sh @@ -480,3 +480,41 @@ cp_get_ldap_realm() { CP_ECHO_RETURN="$echo_return" } +_cp_customize() { + [ "$CP_SCRIPT_DEBUG" ] && set -vx + # < input functions > output_functions + # new-prefix list-of-functions + perl -e ' + $prefix = shift; %keep = (); $output = ""; + $keep{$_} = 1 for @ARGV; + # add dependent functions + %deps = ( + get_ifaddr => [ "get_ifdefault" ], + get_netaddr => [ "get_ifdefault", "get_ifaddr", "get_ifmask" ], + check_and_backup => [ "backup_conffile" ], + check_and_sed => [ "mv" ], + get_ldap_realm => [ "get_ldap_suffix" ], + ); + foreach my $f (keys(%keep)) { + if (exists($deps{$f})) { + $keep{$_} = 1 for (@{$deps{$f}}); + } + } + while () { + if (/^_?cp_(\w+) *\(\) *\{/) { + if (! exists($keep{$1})) { + while () { last if /^\}/; } # skip it + next; + } else { + $output .= "\n"; + } + } + next if /^\s*(\#|$)/; + $output .= $_; + } + $output =~ s/\b(_?)cp_/$1${prefix}_/sg; + $prefix = uc($prefix); + $output =~ s/\b(_?)CP_/$1${prefix}_/sg; + print $output; + ' -- $* +} -- 1.7.10.4