version 1.3, 2003/08/12 10:22:35
|
version 1.6, 2003/08/12 11:02:59
|
Line 50
|
Line 50
|
# not the IP address of the host. |
# not the IP address of the host. |
# |
# |
# $Log$ |
# $Log$ |
|
# Revision 1.6 2003/08/12 11:02:59 foxr |
|
# Implement command switch dispatching. |
|
# |
|
# Revision 1.5 2003/08/12 10:55:42 foxr |
|
# Complete command line parsing (tested) |
|
# |
|
# Revision 1.4 2003/08/12 10:40:44 foxr |
|
# Get switch parsing right. |
|
# |
# Revision 1.3 2003/08/12 10:22:35 foxr |
# Revision 1.3 2003/08/12 10:22:35 foxr |
# Put in parameter parsing infrastructure |
# Put in parameter parsing infrastructure |
# |
# |
Line 95 USAGE
|
Line 104 USAGE
|
# |
# |
# This function does not validation of the parameters of push and |
# This function does not validation of the parameters of push and |
# reinit. |
# reinit. |
|
# |
|
# returns a list. The first element of the list is the operation name |
|
# (e.g. reinit or push). The second element is the switch parameter. |
|
# for push, this is the table name, for reinit, this is the process name. |
|
# Additional elements of the list are the command argument. The count of |
|
# command arguments is validated, but not their semantics. |
|
# |
# returns an empty list if the parse fails. |
# returns an empty list if the parse fails. |
# |
# |
|
|
sub ParseArgs { |
sub ParseArgs { |
return (); |
my $pushing = ''; |
|
my $reiniting = ''; |
|
|
|
if(!GetOptions('push=s' => \$pushing, |
|
'reinit=s' => \$reinitting)) { |
|
return (); |
|
} |
|
|
|
# Require exactly one of --push and --reinit |
|
|
|
my $command = ''; |
|
my $commandarg = ''; |
|
my $paramcount = @ARGV; # Number of additional arguments. |
|
|
|
|
|
if($pushing ne '') { |
|
|
|
# --push takes in addition a table, and a host: |
|
# |
|
if($paramcount != 2) { |
|
return (); # Invalid parameter count. |
|
} |
|
if($command ne '') { |
|
return (); |
|
} else { |
|
|
|
$command = 'push'; |
|
$commandarg = $pushing; |
|
} |
|
} |
|
|
|
if ($reinitting ne '') { |
|
|
|
# --reinit takes in addition just a host name |
|
|
|
if($paramcount != 1) { |
|
return (); |
|
} |
|
if($command ne '') { |
|
return (); |
|
} else { |
|
$command = 'reinit'; |
|
$commandarg = $reinitting; |
|
} |
|
} |
|
|
|
# Build the result list: |
|
|
|
my @result = ($command, $commandarg); |
|
my $i; |
|
for($i = 0; $i < $paramcount; $i++) { |
|
push(@result, $ARGV[$i]); |
|
} |
|
|
|
return @result; |
} |
} |
|
|
# |
#--------------------------- Entry point: -------------------------- |
# If command parsing failed, then print usage: |
|
|
# Parse the parameters |
|
# If command parsing failed, then print usage: |
|
|
@status = ParseArgs;= |
@params = ParseArgs; |
$nparam = @status; |
$nparam = @params; |
|
|
if($nparam == 0) { |
if($nparam == 0) { |
Usage; |
Usage; |
|
exit -1; |
|
} |
|
|
|
|
|
sub PushFile { |
|
print "Pushing a file\n"; |
|
} |
|
|
|
sub ReinitProcess { |
|
print "Reinitializing a process\n"; |
|
} |
|
|
|
# Based on the operation requested invoke the appropriate function: |
|
|
|
$operation = shift @params; |
|
|
|
if($operation eq "push") { # push tablename filename host |
|
$tablename = shift @params; |
|
$tablefile = shift @params; |
|
$host = shift @params; |
|
PushFile($tablename, $tablefile, $host); |
|
|
|
} |
|
if($operation eq "reinit") { # reinit processname host. |
|
$process = shift @params; |
|
$host = shift @params; |
|
ReinitProcess($process, $host); |
} |
} |
|
exit 0; |
|
|
=head1 NAME |
=head1 NAME |
lonManage - Command line utility for remote management of lonCAPA |
lonManage - Command line utility for remote management of lonCAPA |