1package Goo::CommandLineManager;
2
3###############################################################################
4# Nigel Hamilton
5#
6# Copyright Nigel Hamilton 2004
7# All Rights Reserved
8#
9# Author: 		Nigel Hamilton
10# Filename:		Goo::CommandLineManager.pm
11# Description: 	Manage command line parameters
12#
13# Date	 		Change
14# -----------------------------------------------------------------------------
15# 31/10/2004	Auto generated file
16# 31/10/2004	Needed to reuse handling command lines
17#
18###############################################################################
19
20use strict;
21use Goo::Object;
22
23use base qw(Goo::Object);
24
25
26###############################################################################
27#
28# new - constructor
29#
30###############################################################################
31
32sub new {
33
34	my ($class, @parameters) = @_;
35
36	my $this = $class->SUPER::new();
37
38   	# the first parameter is the switch
39    $this->{switch} 	= shift(@parameters);
40    $this->{switch} 	=~ s/\-//g;
41    $this->{parameters} = \@parameters;
42
43	return $this;
44
45}
46
47
48###############################################################################
49#
50# get_last_parameter - pop off the last parameter
51#
52###############################################################################
53
54sub get_last_parameter {
55
56	my ($this) = @_;
57
58	return pop @{ $this->{parameters} };
59
60}
61
62
63###############################################################################
64#
65# get_parameters - return all the parameters
66#
67###############################################################################
68
69sub get_parameters {
70
71	my ($this) = @_;
72
73	return @{ $this->{parameters} };
74
75}
76
77
78###############################################################################
79#
80# get_parameter - return an option that corresponds to the right switch
81#
82###############################################################################
83
84sub get_parameter {
85
86	my ($this, $order) = @_;
87
88	$order--;
89
90	#print join("<---array \n", @{ $this->{parameters} });
91
92	my $parameter = @{ $this->{parameters} }[$order];
93
94	#print "parameter -- $order === --->$parameter<--\n";
95
96	return $parameter;
97
98}
99
100
101###############################################################################
102#
103# get_selected_option - return an option that corresponds to the right switch
104#
105###############################################################################
106
107sub get_selected_option {
108
109	my ($this) = @_;
110
111        my $switch = $this->{switch};
112
113        $switch =~ s/\-//g;
114
115        return $this->{switch};
116
117}
118
119
120###############################################################################
121#
122# add_option - add an option to manage on the command line
123#
124###############################################################################
125
126sub add_option {
127
128	my ($this, $option) = @_;
129
130	# add the switch to this object
131	$this->{options}->{$option->get_short_label()} = $option;
132        $this->{options}->{$option->get_long_label()}  = $option;
133
134}
135
136
137###############################################################################
138#
139# get_switch - return the value of the switch
140#
141###############################################################################
142
143sub get_switch {
144
145	my ($this) = @_;
146
147        return $this->{switch};
148
149}
150
151
152###############################################################################
153#
154# show_help - display the help for all the command options
155#
156###############################################################################
157
158sub show_help {
159
160	my ($this) = @_;
161
162        foreach my $option (sort keys %{$this->{options}}) {
163
164                # print "option ==== $option \n";
165                print "\t\t-$option      \t".$this->{options}->{$option}->get_help()."\n";
166        }
167
168}
169
170
1711;
172
173
174__END__
175
176=head1 NAME
177
178Goo::CommandLineManager - Manage command line parameters
179
180=head1 SYNOPSIS
181
182use Goo::CommandLineManager;
183
184=head1 DESCRIPTION
185
186Manage command line arguments.
187
188=head1 METHODS
189
190=over
191
192=item new
193
194constructor
195
196=item get_last_parameter
197
198pop off the last parameter on the command line
199
200=item get_parameters
201
202return all the parameters on the command line
203
204=item get_parameter
205
206return the parameter at a given position
207
208=item get_selected_option
209
210return the switch that is specified
211
212=item add_option
213
214add an option to manage on the command line
215
216=item get_switch
217
218return the value of the switch
219
220=item show_help
221
222display the help for all the command options
223
224=back
225
226=head1 AUTHOR
227
228Nigel Hamilton <nigel@trexy.com>
229
230=head1 SEE ALSO
231
232