summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorEvgeni Golov <evgeni@golov.de>2014-10-03 20:41:51 +0200
committerEvgeni Golov <sargentd@die-welt.net>2014-10-03 21:11:37 +0200
commitc29f2b286752f844a7659ec38fc22aeb02f0ff45 (patch)
tree08c0a471ccab950bda0660757f5d53bf4935fa03 /lib
parentdfae38b656242898ce962c9ad93ed66be45fc3d4 (diff)
downloadmonitoring-plugin-perl-c29f2b286752f844a7659ec38fc22aeb02f0ff45.tar.gz
GetOpt::Long optional arguments using a colon instead of an equal sign
Instead of writing `foo|f=s` you can also write `foo|f:s` for a GetOpt::Long option spec [1], thus making the argument optional. The current implementation of `_spec_to_help` will wrongly render this as two long options: --dirport, --d:9030 directory port instead of a short and a long one: -d, --dirport=INTEGER directory port This commit fixes the the parsing of the spec, detection of the type and adds tests for a few common cases this could be used in. [1] http://perldoc.perl.org/Getopt/Long.html#Summary-of-Option-Specifications
Diffstat (limited to 'lib')
-rw-r--r--lib/Monitoring/Plugin/Getopt.pm4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/Monitoring/Plugin/Getopt.pm b/lib/Monitoring/Plugin/Getopt.pm
index ebdd559..e09ff62 100644
--- a/lib/Monitoring/Plugin/Getopt.pm
+++ b/lib/Monitoring/Plugin/Getopt.pm
@@ -81,7 +81,7 @@ sub _spec_to_help
81{ 81{
82 my ($self, $spec, $label) = @_; 82 my ($self, $spec, $label) = @_;
83 83
84 my ($opts, $type) = split /=/, $spec, 2; 84 my ($opts, $type) = split /=|:/, $spec, 2;
85 my (@short, @long); 85 my (@short, @long);
86 for (split /\|/, $opts) { 86 for (split /\|/, $opts) {
87 if (length $_ == 1) { 87 if (length $_ == 1) {
@@ -97,7 +97,7 @@ sub _spec_to_help
97 $help .= '=' . $label; 97 $help .= '=' . $label;
98 } 98 }
99 else { 99 else {
100 $help .= $type eq 'i' ? '=INTEGER' : '=STRING'; 100 $help .= ($type eq 'i' || $type eq '+' || $type =~ /\d+/) ? '=INTEGER' : '=STRING';
101 } 101 }
102 } 102 }
103 elsif ($label) { 103 elsif ($label) {