summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/string/option.rb15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/puppet/string/option.rb b/lib/puppet/string/option.rb
index 26b769c2e..70d62a01f 100644
--- a/lib/puppet/string/option.rb
+++ b/lib/puppet/string/option.rb
@@ -1,5 +1,5 @@
class Puppet::String::Option
- attr_reader :string
+ attr_reader :parent
attr_reader :name
attr_reader :aliases
attr_accessor :desc
@@ -11,17 +11,26 @@ class Puppet::String::Option
!!@optional_argument
end
- def initialize(string, *declaration, &block)
- @string = string
+ def initialize(parent, *declaration, &block)
+ @parent = parent
@optparse = []
# Collect and sort the arguments in the declaration.
+ dups = {}
declaration.each do |item|
if item.is_a? String and item.to_s =~ /^-/ then
unless item =~ /^-[a-z]\b/ or item =~ /^--[^-]/ then
raise ArgumentError, "#{item.inspect}: long options need two dashes (--)"
end
@optparse << item
+
+ # Duplicate checking...
+ name = optparse_to_name(item)
+ if dup = dups[name] then
+ raise ArgumentError, "#{item.inspect}: duplicates existing alias #{dup.inspect} in #{@parent}"
+ else
+ dups[name] = item
+ end
else
raise ArgumentError, "#{item.inspect} is not valid for an option argument"
end