| Line 35... |
Line 35... |
| 35 |
#
|
35 |
#
|
| 36 |
# v1.2.0 20240826 RWR
|
36 |
# v1.2.0 20240826 RWR
|
| 37 |
# Modified the flag structure to conform to standard (ie, dryrun instead of yes)
|
37 |
# Modified the flag structure to conform to standard (ie, dryrun instead of yes)
|
| 38 |
# Added a lot of 'verbose' print lines, and modified for new flag structure
|
38 |
# Added a lot of 'verbose' print lines, and modified for new flag structure
|
| 39 |
# Added a config file, which is auto-generated if it doesn't exist
|
39 |
# Added a config file, which is auto-generated if it doesn't exist
|
| - |
|
40 |
#
|
| - |
|
41 |
# v1.2.1 20250511 RWR
|
| - |
|
42 |
# changed so even if quiet set, if dryrun is set, will print what is returned from the called script
|
| - |
|
43 |
# Also, incorporates v1.3.0 on cluster.pm and v1.2.1 on havirt.pm
|
| 40 |
|
44 |
|
| 41 |
#use experimental "switch";
|
45 |
#use experimental "switch";
|
| 42 |
|
46 |
|
| 43 |
# requires File::Slurp.
|
47 |
# requires File::Slurp.
|
| 44 |
# In Debian derivatives
|
48 |
# In Debian derivatives
|
| Line 92... |
Line 96... |
| 92 |
print "\t--force|f force an action, even if not normally done\n";
|
96 |
print "\t--force|f force an action, even if not normally done\n";
|
| 93 |
print "\t--target|-t NODE # the action use NODE for the target of actions\n";
|
97 |
print "\t--target|-t NODE # the action use NODE for the target of actions\n";
|
| 94 |
print "\t--dryrun|-n # does not perform the actions, simply shows what commands would be executed\n";
|
98 |
print "\t--dryrun|-n # does not perform the actions, simply shows what commands would be executed\n";
|
| 95 |
print "\t--debug|d # increases verbosity, with -ddd, totally outragious\n";
|
99 |
print "\t--debug|d # increases verbosity, with -ddd, totally outragious\n";
|
| 96 |
print "\t--quiet|q # do not print anything except major errors\n";
|
100 |
print "\t--quiet|q # do not print anything except major errors\n";
|
| - |
|
101 |
print "\t--verbose|v # increase verbosity of program. May be used multiple times\n";
|
| 97 |
}
|
102 |
}
|
| 98 |
|
103 |
|
| 99 |
&makeConfig( $config,$configFileName ) unless -f $configFileName;
|
104 |
&makeConfig( $config,$configFileName ) unless -f $configFileName;
|
| 100 |
$config = readConfig( $configFileName );
|
105 |
$config = readConfig( $configFileName );
|
| 101 |
|
106 |
|
| Line 161... |
Line 166... |
| 161 |
# new module.
|
166 |
# new module.
|
| 162 |
|
167 |
|
| 163 |
|
168 |
|
| 164 |
# we have to concat here since the double colon causes some interpretation problems
|
169 |
# we have to concat here since the double colon causes some interpretation problems
|
| 165 |
my $execute = $command . '::' . $action;
|
170 |
my $execute = $command . '::' . $action;
|
| - |
|
171 |
|
| 166 |
# load the module, die if it doesn't exist.
|
172 |
# load the module, die if it doesn't exist.
|
| 167 |
if (-f $config->{'script dir'} . "/$command.pm" ) {
|
173 |
if (-f $config->{'script dir'} . "/$command.pm" ) {
|
| 168 |
require "$command.pm";
|
174 |
require "$command.pm";
|
| 169 |
Module->import( $command ); # for require, you must manually import
|
175 |
Module->import( $command ); # for require, you must manually import
|
| 170 |
} else {
|
176 |
} else {
|
| 171 |
die "Error, I don't know the command [$command]\n";
|
177 |
die "Error, I don't know the command [$command]\n";
|
| 172 |
}
|
178 |
}
|
| 173 |
|
179 |
|
| 174 |
if ( defined &{\&{$execute}} ) { # check if module::sub exists (ie, $command::action)
|
180 |
if ( defined &{\&{$execute}} ) { # check if module::sub exists (ie, $command::action)
|
| 175 |
my $message = &{\&{$execute}}(@ARGV); # yes, it exists, so call it with any remaining arguments
|
181 |
my $message = &{\&{$execute}}(@ARGV); # yes, it exists, so call it with any remaining arguments
|
| 176 |
print $message unless $main::config->{'flags'}->{'quiet'};
|
182 |
print $message unless $main::config->{'flags'}->{'quiet'} && !$main::config->{'flags'}->{'dryrun'};
|
| 177 |
} else { # method $action does not exist in module $command, so just a brief error message
|
183 |
} else { # method $action does not exist in module $command, so just a brief error message
|
| 178 |
die "Error, could not find action [$action] for module [$command]\n";
|
184 |
die "Error, could not find action [$action] for module [$command]\n";
|
| 179 |
}
|
185 |
}
|
| 180 |
|
186 |
|
| 181 |
1;
|
187 |
1;
|