X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=lib%2FUtils.pm;h=9666d81d3e7ef3d1c3e28dd4a8d67e3bd1afd357;hb=311705d735c46faae8fc4a53c3d19bd9f81ac365;hp=1bed47b006b84bcdd300e06c008b1841714e4ca9;hpb=0a098660de8f2dbcf1aa727ebaaad1f7c3b42b3a;p=clearscm.git diff --git a/lib/Utils.pm b/lib/Utils.pm index 1bed47b..9666d81 100644 --- a/lib/Utils.pm +++ b/lib/Utils.pm @@ -74,6 +74,7 @@ our @EXPORT = qw ( GetChildren GetPassword InArray + LoadAvg PageOutput PipeOutput PipeOutputArray @@ -311,6 +312,41 @@ Returns: sub GetPassword (;$) { my ($prompt) = @_; + +=pod + +=head2 GetPassword (;$prompt) + +Prompt for a password + +Parameters: + +=for html
+ +=over + +=item $prompt + +Prompt string to use (Default: "Password:") + +=back + +=for html
+ +Returns: + +=for html
+ +=over + +=item $password + +=back + +=for html
+ +=cut + $prompt ||= 'Password'; @@ -395,6 +431,60 @@ Returns: return $FALSE; } # InArray +sub LoadAvg () { + +=pod + +=head2 LoadAvg () + +Return an array of the 1, 5, and 15 minute load averages. + +Parameters: + +=for html
+ +=over + +=item none + +=back + +=for html
+ +Returns: + +=for html
+ +=over + +=item An array of the 1, 5, and 15 minute load averages in a list context. +In a scalar context just the 1 minute load average. + +=back + +=for html
+ +=cut + + # TODO: Make it work on Windows... + return if $^O =~ /win/i; + + open my $loadAvg, '/proc/loadavg' + or croak "Unable to open /proc/loadavg\n"; + + my $load = <$loadAvg>; + + close $loadAvg; + + my @loadAvgs = split /\s/, $load; + + if (wantarray) { + return @loadAvgs; + } else { + return $loadAvgs[0]; # This is the 1 minute average + } +} # LoadAvg + our $pipe; sub StartPipe ($;$) { @@ -792,7 +882,8 @@ and the values of the hash will be the counters. =item $log -Logger object to log stats to (if specified) +Logger object to log stats to (if specified). Note: if the Logger object has +errors or warnings then they will be automatically included in the output. =back @@ -814,7 +905,12 @@ Returns: my $msg = "$FindBin::Script Run Statistics:"; - if (scalar keys %$total) { + if ($log and ref $log eq 'Logger') { + $total->{errors} = $log->{errors}; + $total->{warnings} = $log->{warnings}; + } # if + + if (keys %$total) { # Display statistics (if any) if ($log) { $log->msg ($msg); @@ -823,10 +919,10 @@ Returns: } # if foreach (sort keys %$total) { - $msg = $$total{$_} . "\t $_"; + $msg = $total->{$_} . "\t $_"; if ($log) { - $log->msg ($$total{$_} . "\t $_"); + $log->msg ($total->{$_} . "\t $_"); } else { display $msg; } # if