1*b1cdbd2cSJim Jagielski#**************************************************************
2*b1cdbd2cSJim Jagielski#
3*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
6*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski#
11*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski#
13*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski#  under the License.
19*b1cdbd2cSJim Jagielski#
20*b1cdbd2cSJim Jagielski#**************************************************************
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski#*************************************************************************
25*b1cdbd2cSJim Jagielski#
26*b1cdbd2cSJim Jagielski# SourceConfigHelper - Perl extension for parsing general info databases
27*b1cdbd2cSJim Jagielski#
28*b1cdbd2cSJim Jagielski# usage: see below
29*b1cdbd2cSJim Jagielski#
30*b1cdbd2cSJim Jagielski#*************************************************************************
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielskipackage SourceConfigHelper;
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielskiuse strict;
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielskiuse RepositoryHelper;
37*b1cdbd2cSJim Jagielskiuse SourceConfig;
38*b1cdbd2cSJim Jagielskiuse Cwd qw (cwd);
39*b1cdbd2cSJim Jagielskiuse Carp;
40*b1cdbd2cSJim Jagielski
41*b1cdbd2cSJim Jagielskimy $debug = 0;
42*b1cdbd2cSJim Jagielskimy @source_config_list; # array of sourceconfig objects
43*b1cdbd2cSJim Jagielski
44*b1cdbd2cSJim Jagielski#-----------------------------------------------------------------------
45*b1cdbd2cSJim Jagielski#	Constants
46*b1cdbd2cSJim Jagielski#-----------------------------------------------------------------------
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielskiuse constant SOURCE_CONFIG_NONE => 0;
49*b1cdbd2cSJim Jagielskiuse constant SOURCE_CONFIG_CURRENT_FIRST => 1;
50*b1cdbd2cSJim Jagielskiuse constant SOURCE_CONFIG_ENVIRONMENT_FIRST => 2;
51*b1cdbd2cSJim Jagielskiuse constant SOURCE_CONFIG_CURRENT_ONLY => 3;
52*b1cdbd2cSJim Jagielskiuse constant SOURCE_CONFIG_ENVIRONMENT_ONLY => 4;
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielskiuse constant SOURCE_CONFIG_DEFAULT => SOURCE_CONFIG_CURRENT_FIRST;
55*b1cdbd2cSJim Jagielski
56*b1cdbd2cSJim Jagielski#####  profiling #####
57*b1cdbd2cSJim Jagielski
58*b1cdbd2cSJim Jagielski##### ctor #####
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielskisub new {
61*b1cdbd2cSJim Jagielski    my $proto = shift;
62*b1cdbd2cSJim Jagielski    my $class = ref($proto) || $proto;
63*b1cdbd2cSJim Jagielski    my $init_action = shift;
64*b1cdbd2cSJim Jagielski    my $self = {};
65*b1cdbd2cSJim Jagielski    my $SourceConfigCurrent;
66*b1cdbd2cSJim Jagielski    my $SourceConfigEnvironment;
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski    $init_action = SOURCE_CONFIG_DEFAULT if (!defined ($init_action));
69*b1cdbd2cSJim Jagielski    if (!eval ($init_action) or ($init_action < SOURCE_CONFIG_NONE) or ($init_action > SOURCE_CONFIG_ENVIRONMENT_ONLY)) {
70*b1cdbd2cSJim Jagielski		croak("wrong initial parameter: $init_action\n");
71*b1cdbd2cSJim Jagielski    }
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski    if ($init_action != SOURCE_CONFIG_NONE) {
74*b1cdbd2cSJim Jagielski		my $repositoryHash_ref = {};
75*b1cdbd2cSJim Jagielski		if ($init_action != SOURCE_CONFIG_ENVIRONMENT_ONLY) {
76*b1cdbd2cSJim Jagielski			my $initial_directory = cwd();
77*b1cdbd2cSJim Jagielski			my $result = is_repository($initial_directory, $repositoryHash_ref);
78*b1cdbd2cSJim Jagielski			if ($result) {
79*b1cdbd2cSJim Jagielski				$SourceConfigCurrent = SourceConfig->new($repositoryHash_ref->{REPOSITORY_ROOT});
80*b1cdbd2cSJim Jagielski			}
81*b1cdbd2cSJim Jagielski		}
82*b1cdbd2cSJim Jagielski		if ($init_action != SOURCE_CONFIG_CURRENT_ONLY) {
83*b1cdbd2cSJim Jagielski		    my $source_config = $ENV{SOURCE_ROOT_DIR} . '/' . SourceConfig::SOURCE_CONFIG_FILE_NAME;
84*b1cdbd2cSJim Jagielski		    if (-f $source_config) {
85*b1cdbd2cSJim Jagielski				$SourceConfigEnvironment = SourceConfig->new($source_config);
86*b1cdbd2cSJim Jagielski			}
87*b1cdbd2cSJim Jagielski		}
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski		# fill array
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski		if (($init_action == SOURCE_CONFIG_CURRENT_FIRST) or ($init_action == SOURCE_CONFIG_CURRENT_ONLY)) {
92*b1cdbd2cSJim Jagielski			if (defined ($SourceConfigCurrent)) {
93*b1cdbd2cSJim Jagielski				push (@source_config_list, $SourceConfigCurrent);
94*b1cdbd2cSJim Jagielski			}
95*b1cdbd2cSJim Jagielski			if ($init_action == SOURCE_CONFIG_CURRENT_FIRST) {
96*b1cdbd2cSJim Jagielski				if (defined ($SourceConfigEnvironment)) {
97*b1cdbd2cSJim Jagielski					push (@source_config_list, $SourceConfigEnvironment);
98*b1cdbd2cSJim Jagielski				}
99*b1cdbd2cSJim Jagielski			}
100*b1cdbd2cSJim Jagielski		}
101*b1cdbd2cSJim Jagielski		elsif (($init_action == SOURCE_CONFIG_ENVIRONMENT_FIRST) or ($init_action == SOURCE_CONFIG_ENVIRONMENT_ONLY)) {
102*b1cdbd2cSJim Jagielski			if (defined ($SourceConfigEnvironment)) {
103*b1cdbd2cSJim Jagielski				push (@source_config_list, $SourceConfigEnvironment);
104*b1cdbd2cSJim Jagielski			}
105*b1cdbd2cSJim Jagielski			if ($init_action == SOURCE_CONFIG_ENVIRONMENT_FIRST) {
106*b1cdbd2cSJim Jagielski				if (defined ($SourceConfigCurrent)) {
107*b1cdbd2cSJim Jagielski					push (@source_config_list, $SourceConfigCurrent);
108*b1cdbd2cSJim Jagielski				}
109*b1cdbd2cSJim Jagielski			}
110*b1cdbd2cSJim Jagielski		}
111*b1cdbd2cSJim Jagielski    }
112*b1cdbd2cSJim Jagielski
113*b1cdbd2cSJim Jagielski    $self->{SOURCE_CONFIG_LIST} = \@source_config_list;
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski    bless($self, $class);
116*b1cdbd2cSJim Jagielski    return $self;
117*b1cdbd2cSJim Jagielski}
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielski##### methods #####
120*b1cdbd2cSJim Jagielski
121*b1cdbd2cSJim Jagielski############################################################################################
122*b1cdbd2cSJim Jagielski
123*b1cdbd2cSJim Jagielskisub add_SourceConfig {
124*b1cdbd2cSJim Jagielski    my $self = shift;
125*b1cdbd2cSJim Jagielski    my $source_config = shift;
126*b1cdbd2cSJim Jagielski    push (@{$self->{SOURCE_CONFIG_LIST}}, $source_config);
127*b1cdbd2cSJim Jagielski}
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski############################################################################################
130*b1cdbd2cSJim Jagielski
131*b1cdbd2cSJim Jagielskisub get_SourceConfigList {
132*b1cdbd2cSJim Jagielski	my $self = shift;
133*b1cdbd2cSJim Jagielski	return @{$self->{SOURCE_CONFIG_LIST}};
134*b1cdbd2cSJim Jagielski}
135*b1cdbd2cSJim Jagielski
136*b1cdbd2cSJim Jagielski############################################################################################
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielskisub has_SourceConfig {
139*b1cdbd2cSJim Jagielski	my $self = shift;
140*b1cdbd2cSJim Jagielski	my $result = 0;
141*b1cdbd2cSJim Jagielski	my $count = @{$self->{SOURCE_CONFIG_LIST}};
142*b1cdbd2cSJim Jagielski	$result = 1 if ($count > 0);
143*b1cdbd2cSJim Jagielski	return $result;
144*b1cdbd2cSJim Jagielski}
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski############################################################################################
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielskisub get_module_path {
149*b1cdbd2cSJim Jagielski	my $self = shift;
150*b1cdbd2cSJim Jagielski	my $module = shift;
151*b1cdbd2cSJim Jagielski	my $function = \&SourceConfig::get_module_path;
152*b1cdbd2cSJim Jagielski	my $result;
153*b1cdbd2cSJim Jagielski	$result = $self->get_StringResult ($function, $module);
154*b1cdbd2cSJim Jagielski	return $result;
155*b1cdbd2cSJim Jagielski}
156*b1cdbd2cSJim Jagielski
157*b1cdbd2cSJim Jagielski############################################################################################
158*b1cdbd2cSJim Jagielski
159*b1cdbd2cSJim Jagielskisub get_active_modules {
160*b1cdbd2cSJim Jagielski	my $self = shift;
161*b1cdbd2cSJim Jagielski	my $parameter; # empty
162*b1cdbd2cSJim Jagielski	my $function = \&SourceConfig::get_active_modules;
163*b1cdbd2cSJim Jagielski	my $array_ref;
164*b1cdbd2cSJim Jagielski	$array_ref = $self->get_ArrayResult ($function, $parameter);
165*b1cdbd2cSJim Jagielski	return @$array_ref;
166*b1cdbd2cSJim Jagielski}
167*b1cdbd2cSJim Jagielski
168*b1cdbd2cSJim Jagielski############################################################################################
169*b1cdbd2cSJim Jagielski
170*b1cdbd2cSJim Jagielskisub get_repositories {
171*b1cdbd2cSJim Jagielski	my $self = shift;
172*b1cdbd2cSJim Jagielski	my $parameter; # empty
173*b1cdbd2cSJim Jagielski	my $function = \&SourceConfig::get_repositories;
174*b1cdbd2cSJim Jagielski	my $array_ref;
175*b1cdbd2cSJim Jagielski	$array_ref = $self->get_ArrayResult ($function, $parameter);
176*b1cdbd2cSJim Jagielski	return @$array_ref;
177*b1cdbd2cSJim Jagielski}
178*b1cdbd2cSJim Jagielski
179*b1cdbd2cSJim Jagielski############################################################################################
180*b1cdbd2cSJim Jagielski
181*b1cdbd2cSJim Jagielskisub get_module_repository {
182*b1cdbd2cSJim Jagielski	my $self = shift;
183*b1cdbd2cSJim Jagielski	my $module = shift;
184*b1cdbd2cSJim Jagielski	my $function = \&SourceConfig::get_module_repository;
185*b1cdbd2cSJim Jagielski	my $result;
186*b1cdbd2cSJim Jagielski	$result = $self->get_StringResult ($function, $module);
187*b1cdbd2cSJim Jagielski	return $result;
188*b1cdbd2cSJim Jagielski}
189*b1cdbd2cSJim Jagielski
190*b1cdbd2cSJim Jagielski############################################################################################
191*b1cdbd2cSJim Jagielski
192*b1cdbd2cSJim Jagielskisub is_active {
193*b1cdbd2cSJim Jagielski	my $self = shift;
194*b1cdbd2cSJim Jagielski	my $module = shift;
195*b1cdbd2cSJim Jagielski	my $function = \&SourceConfig::is_active;
196*b1cdbd2cSJim Jagielski	my $result_ref;
197*b1cdbd2cSJim Jagielski	my $is_active = 0;
198*b1cdbd2cSJim Jagielski	$result_ref = $self->get_ResultOfList ($function, $module);
199*b1cdbd2cSJim Jagielski	my $count = @$result_ref;
200*b1cdbd2cSJim Jagielski	if ($count>0) {
201*b1cdbd2cSJim Jagielski	    foreach my $active (@$result_ref) {
202*b1cdbd2cSJim Jagielski			if ($active) {
203*b1cdbd2cSJim Jagielski				$is_active = $active;
204*b1cdbd2cSJim Jagielski			}
205*b1cdbd2cSJim Jagielski	    }
206*b1cdbd2cSJim Jagielski	}
207*b1cdbd2cSJim Jagielski	return $is_active;
208*b1cdbd2cSJim Jagielski}
209*b1cdbd2cSJim Jagielski
210*b1cdbd2cSJim Jagielski##### private methods #####
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski############################################################################################
213*b1cdbd2cSJim Jagielski#
214*b1cdbd2cSJim Jagielski# is_repository () : check if the directory is a valid repository
215*b1cdbd2cSJim Jagielski#
216*b1cdbd2cSJim Jagielski# input: - directory
217*b1cdbd2cSJim Jagielski#        - hash reference, where the output will be stored
218*b1cdbd2cSJim Jagielski#
219*b1cdbd2cSJim Jagielski# output: 0 = FALSE, the directory is no valid repository
220*b1cdbd2cSJim Jagielski#         1 = TRUE, the repository root can be found in $repositoryHash_ref->{REPOSITORY_ROOT}
221*b1cdbd2cSJim Jagielski#
222*b1cdbd2cSJim Jagielski############################################################################################
223*b1cdbd2cSJim Jagielski
224*b1cdbd2cSJim Jagielskisub is_repository {
225*b1cdbd2cSJim Jagielski	my $directory = shift;
226*b1cdbd2cSJim Jagielski    my $repositoryHash_ref = shift;
227*b1cdbd2cSJim Jagielski    $repositoryHash_ref->{INITIAL_DIRECTORY} = $directory;
228*b1cdbd2cSJim Jagielski	$repositoryHash_ref->{REPOSITORY_ROOT} = undef;
229*b1cdbd2cSJim Jagielski	$repositoryHash_ref->{REPOSITORY_NAME} = undef;
230*b1cdbd2cSJim Jagielski    my $result = RepositoryHelper::search_via_build_lst($repositoryHash_ref);
231*b1cdbd2cSJim Jagielski    chdir $repositoryHash_ref->{INITIAL_DIRECTORY};
232*b1cdbd2cSJim Jagielski    if (!$result) {
233*b1cdbd2cSJim Jagielski        $result = RepositoryHelper::search_for_hg($repositoryHash_ref);
234*b1cdbd2cSJim Jagielski    }
235*b1cdbd2cSJim Jagielski    return $result;
236*b1cdbd2cSJim Jagielski}
237*b1cdbd2cSJim Jagielski
238*b1cdbd2cSJim Jagielski############################################################################################
239*b1cdbd2cSJim Jagielski#
240*b1cdbd2cSJim Jagielski# get_ResultOfList(): give back an array reference from all SourceConfig Objects results
241*b1cdbd2cSJim Jagielski#
242*b1cdbd2cSJim Jagielski# input: - function : reference to the called function of each SourceConfig Object
243*b1cdbd2cSJim Jagielski#        - parameter : parameter for the called function
244*b1cdbd2cSJim Jagielski#
245*b1cdbd2cSJim Jagielski# output: result : array of all results
246*b1cdbd2cSJim Jagielski#
247*b1cdbd2cSJim Jagielski############################################################################################
248*b1cdbd2cSJim Jagielski
249*b1cdbd2cSJim Jagielskisub get_ResultOfList {
250*b1cdbd2cSJim Jagielski	my $self = shift;
251*b1cdbd2cSJim Jagielski	my $function = shift;
252*b1cdbd2cSJim Jagielski	my $parameter = shift;
253*b1cdbd2cSJim Jagielski	my @result;
254*b1cdbd2cSJim Jagielski	foreach my $source_config (@{$self->{SOURCE_CONFIG_LIST}}) {
255*b1cdbd2cSJim Jagielski		push (@result, &$function ($source_config, $parameter));
256*b1cdbd2cSJim Jagielski	}
257*b1cdbd2cSJim Jagielski	return \@result;
258*b1cdbd2cSJim Jagielski}
259*b1cdbd2cSJim Jagielski
260*b1cdbd2cSJim Jagielski############################################################################################
261*b1cdbd2cSJim Jagielski#
262*b1cdbd2cSJim Jagielski# get_StringResult(): give back the first defined result from all SourceConfig Objects
263*b1cdbd2cSJim Jagielski#
264*b1cdbd2cSJim Jagielski# input: - function : reference to the called function of each SourceConfig Object
265*b1cdbd2cSJim Jagielski#        - parameter : parameter for the called function
266*b1cdbd2cSJim Jagielski#
267*b1cdbd2cSJim Jagielski# output: result : scalar variable (string), undef if no result
268*b1cdbd2cSJim Jagielski#
269*b1cdbd2cSJim Jagielski############################################################################################
270*b1cdbd2cSJim Jagielski
271*b1cdbd2cSJim Jagielskisub get_StringResult {
272*b1cdbd2cSJim Jagielski	my $self = shift;
273*b1cdbd2cSJim Jagielski	my $function = shift;
274*b1cdbd2cSJim Jagielski	my $parameter = shift;
275*b1cdbd2cSJim Jagielski	my $result_ref;
276*b1cdbd2cSJim Jagielski	$result_ref = $self->get_ResultOfList ($function, $parameter);
277*b1cdbd2cSJim Jagielski	my $count = @$result_ref;
278*b1cdbd2cSJim Jagielski	if ($count>0) {
279*b1cdbd2cSJim Jagielski		my $value;
280*b1cdbd2cSJim Jagielski		my $i = 0;
281*b1cdbd2cSJim Jagielski		while (($i < $count) and !defined ($value)) { # search the first defined result
282*b1cdbd2cSJim Jagielski			$value = $$result_ref[$i];
283*b1cdbd2cSJim Jagielski			$i++;
284*b1cdbd2cSJim Jagielski	    }
285*b1cdbd2cSJim Jagielski		return $value;
286*b1cdbd2cSJim Jagielski	}
287*b1cdbd2cSJim Jagielski	return undef;
288*b1cdbd2cSJim Jagielski}
289*b1cdbd2cSJim Jagielski
290*b1cdbd2cSJim Jagielski############################################################################################
291*b1cdbd2cSJim Jagielski#
292*b1cdbd2cSJim Jagielski# get_StringResult(): give back a sorted and uniqe array reference of the results
293*b1cdbd2cSJim Jagielski#                     from all SourceConfig Objects
294*b1cdbd2cSJim Jagielski#
295*b1cdbd2cSJim Jagielski# input: - function : reference to the called function of each SourceConfig Object
296*b1cdbd2cSJim Jagielski#        - parameter : parameter for the called function
297*b1cdbd2cSJim Jagielski#
298*b1cdbd2cSJim Jagielski# output: result : sorted and uniqe array reference
299*b1cdbd2cSJim Jagielski#
300*b1cdbd2cSJim Jagielski############################################################################################
301*b1cdbd2cSJim Jagielski
302*b1cdbd2cSJim Jagielskisub get_ArrayResult {
303*b1cdbd2cSJim Jagielski	my $self = shift;
304*b1cdbd2cSJim Jagielski	my $function = shift;
305*b1cdbd2cSJim Jagielski	my $parameter = shift;
306*b1cdbd2cSJim Jagielski	my $result_ref;
307*b1cdbd2cSJim Jagielski	my @modules;
308*b1cdbd2cSJim Jagielski	$result_ref = $self->get_ResultOfList ($function, $parameter);
309*b1cdbd2cSJim Jagielski	my $count = @$result_ref;
310*b1cdbd2cSJim Jagielski	if ($count>0) {
311*b1cdbd2cSJim Jagielski	    my %moduleHash;
312*b1cdbd2cSJim Jagielski	    foreach my $module (@$result_ref) {
313*b1cdbd2cSJim Jagielski			$moduleHash{$module}++;
314*b1cdbd2cSJim Jagielski	    }
315*b1cdbd2cSJim Jagielski	    @modules = sort keys %moduleHash;
316*b1cdbd2cSJim Jagielski	}
317*b1cdbd2cSJim Jagielski	return \@modules;
318*b1cdbd2cSJim Jagielski}
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielski ##### finish #####
321*b1cdbd2cSJim Jagielski
322*b1cdbd2cSJim Jagielski1; # needed by use or require
323*b1cdbd2cSJim Jagielski
324*b1cdbd2cSJim Jagielski__END__
325*b1cdbd2cSJim Jagielski
326*b1cdbd2cSJim Jagielski=head1 NAME
327*b1cdbd2cSJim Jagielski
328*b1cdbd2cSJim JagielskiSourceConfigHelper - Perl extension for handling with SourceConfigObjetcs
329*b1cdbd2cSJim Jagielski
330*b1cdbd2cSJim Jagielski=head1 SYNOPSIS
331*b1cdbd2cSJim Jagielski
332*b1cdbd2cSJim Jagielski    # example that will read source_config file and return the active repositories
333*b1cdbd2cSJim Jagielski
334*b1cdbd2cSJim Jagielski    use SourceConfigHelper;
335*b1cdbd2cSJim Jagielski
336*b1cdbd2cSJim Jagielski    # Create a new instance:
337*b1cdbd2cSJim Jagielski    $a = SourceConfigHelper->new();
338*b1cdbd2cSJim Jagielski
339*b1cdbd2cSJim Jagielski    # Get repositories for the actual workspace:
340*b1cdbd2cSJim Jagielski    $a->get_repositories();
341*b1cdbd2cSJim Jagielski
342*b1cdbd2cSJim Jagielski=head1 DESCRIPTION
343*b1cdbd2cSJim Jagielski
344*b1cdbd2cSJim JagielskiSourceConfigHelper is a perl extension to handle more than one objects of SourceConfig
345*b1cdbd2cSJim Jagielskito set up a search order for modules.
346*b1cdbd2cSJim Jagielski
347*b1cdbd2cSJim JagielskiMethods:
348*b1cdbd2cSJim Jagielski
349*b1cdbd2cSJim JagielskiSourceConfigHelper::new()
350*b1cdbd2cSJim Jagielski
351*b1cdbd2cSJim JagielskiCreates a new instance of SourceConfigHelper. Can be initialized by: default - empty or with a constant of search order. default: the source_config will be taken first from the current repository and second from the environment
352*b1cdbd2cSJim JagielskiPossible parameters are:
353*b1cdbd2cSJim JagielskiSourceConfigHelper::SOURCE_CONFIG_NONE - no SourceConfig Object will be created
354*b1cdbd2cSJim JagielskiSourceConfigHelper::SOURCE_CONFIG_CURRENT_FIRST - use the current repository first
355*b1cdbd2cSJim JagielskiSourceConfigHelper::SOURCE_CONFIG_ENVIRONMENT_FIRST - use the repository of the environment first
356*b1cdbd2cSJim JagielskiSourceConfigHelper::SOURCE_CONFIG_CURRENT_ONLY - use only the current repository
357*b1cdbd2cSJim JagielskiSourceConfigHelper::SOURCE_CONFIG_ENVIRONMENT_ONLY - use only the repository of the environment
358*b1cdbd2cSJim Jagielski
359*b1cdbd2cSJim JagielskiSourceConfigHelper::get_repositories()
360*b1cdbd2cSJim Jagielski
361*b1cdbd2cSJim JagielskiReturns sorted list of active repositories for the actual workspace
362*b1cdbd2cSJim Jagielski
363*b1cdbd2cSJim JagielskiSourceConfigHelper::get_active_modules()
364*b1cdbd2cSJim Jagielski
365*b1cdbd2cSJim JagielskiReturns a sorted list of active modules
366*b1cdbd2cSJim Jagielski
367*b1cdbd2cSJim JagielskiSourceConfigHelper::get_all_modules()
368*b1cdbd2cSJim Jagielski
369*b1cdbd2cSJim JagielskiReturns sorted list of all modules in active repositories.
370*b1cdbd2cSJim Jagielski
371*b1cdbd2cSJim JagielskiSourceConfigHelper::get_module_path($module)
372*b1cdbd2cSJim Jagielski
373*b1cdbd2cSJim JagielskiReturns absolute module path. If the module is not active or don't exists, "undef" will be returned.
374*b1cdbd2cSJim Jagielski
375*b1cdbd2cSJim JagielskiSourceConfigHelper::get_module_repository($module)
376*b1cdbd2cSJim Jagielski
377*b1cdbd2cSJim JagielskiReturns the module's repository. If the module is not active or don't exists, "undef" will be returned.
378*b1cdbd2cSJim Jagielski
379*b1cdbd2cSJim JagielskiSourceConfigHelper::is_active()
380*b1cdbd2cSJim Jagielski
381*b1cdbd2cSJim JagielskiReturns 1 (TRUE) if a module is active
382*b1cdbd2cSJim JagielskiReturns 0 (FALSE) if a module is not active
383*b1cdbd2cSJim Jagielski
384*b1cdbd2cSJim JagielskiSourceConfigHelper::add_SourceConfig($SourceConfigObject)
385*b1cdbd2cSJim Jagielski
386*b1cdbd2cSJim JagielskiAdd the SourceConfigObject to the end of the list
387*b1cdbd2cSJim Jagielski
388*b1cdbd2cSJim JagielskiSourceConfigHelper::get_SourceConfigList()
389*b1cdbd2cSJim Jagielski
390*b1cdbd2cSJim JagielskiReturn an array of SourceConfigObjects
391*b1cdbd2cSJim Jagielski
392*b1cdbd2cSJim JagielskiSourceConfigHelper::has_SourceConfig()
393*b1cdbd2cSJim Jagielski
394*b1cdbd2cSJim JagielskiReturns 1 (TRUE) if one or more SourceConfig Objects is in the list
395*b1cdbd2cSJim JagielskiReturns 0 (FALSE) if no SourceConfig Object is in the list (can happen if there is no valid repository)
396*b1cdbd2cSJim Jagielski
397*b1cdbd2cSJim Jagielski=head2 EXPORT
398*b1cdbd2cSJim Jagielski
399*b1cdbd2cSJim JagielskiSourceConfigHelper::new()
400*b1cdbd2cSJim JagielskiSourceConfigHelper::get_repositories()
401*b1cdbd2cSJim JagielskiSourceConfigHelper::get_active_modules()
402*b1cdbd2cSJim JagielskiSourceConfigHelper::get_all_modules()
403*b1cdbd2cSJim JagielskiSourceConfigHelper::get_module_path($module)
404*b1cdbd2cSJim JagielskiSourceConfigHelper::get_module_repository($module)
405*b1cdbd2cSJim JagielskiSourceConfigHelper::is_active($module)
406*b1cdbd2cSJim JagielskiSourceConfigHelper::add_SourceConfig($SourceConfigObject)
407*b1cdbd2cSJim JagielskiSourceConfigHelper::get_SourceConfigList()
408*b1cdbd2cSJim JagielskiSourceConfigHelper::has_SourceConfig()
409*b1cdbd2cSJim Jagielski
410*b1cdbd2cSJim Jagielski=head1 AUTHOR
411*b1cdbd2cSJim Jagielski
412*b1cdbd2cSJim JagielskiKurt Zenker, kz@openoffice.org
413*b1cdbd2cSJim Jagielski
414*b1cdbd2cSJim Jagielski=head1 SEE ALSO
415*b1cdbd2cSJim Jagielski
416*b1cdbd2cSJim Jagielskiperl(1).
417*b1cdbd2cSJim Jagielski
418*b1cdbd2cSJim Jagielski=cut 
419