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