summaryrefslogtreecommitdiff
path: root/lib/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/provider/sudoers/parsed.rb55
1 files changed, 43 insertions, 12 deletions
diff --git a/lib/puppet/provider/sudoers/parsed.rb b/lib/puppet/provider/sudoers/parsed.rb
index e7f6cbe..5c3dc88 100644
--- a/lib/puppet/provider/sudoers/parsed.rb
+++ b/lib/puppet/provider/sudoers/parsed.rb
@@ -18,13 +18,13 @@ Puppet::Type.type(:sudoers).provide(
commands :visudo => 'visudo'
# this is just copied from hosts
-# text_line :comment, :match => %r{^#}, :post_parse => proc { |record|
-# # we determine the name from the comment above user spec lines
-# if record[:line] =~ /Puppet Name: (.+)\s*$/
+ text_line :comment, :match => %r{^#}, :post_parse => proc { |record|
+ # we determine the name from the comment above user spec lines
+ if record[:line] =~ /Puppet Name: (.+)\s*$/
## ok, we set record name, but how is this applied to the next line?
-# record[:name] = $1
-# end
-# }
+ record[:name] = $1
+ end
+ }
text_line :blank, :match => /^\s*$/;
@@ -58,9 +58,9 @@ Puppet::Type.type(:sudoers).provide(
#puts hash.to_yaml
# create records for user specs
elsif (hash[:line] =~ /^(.*)?=(.*)$/)
+ #hash = Puppet::Provider::Sudoers::Parsed.parse_user_spec($1, $2)
puts hash[:line]
# should name already be set when get get here?
- #hash = Puppet::Provider::Sudoers::Parsed.parse_user_spec($1, $2)
lhs = $1
rhs = $2
hash[:type] = 'spec'
@@ -72,7 +72,7 @@ puts hash[:line]
hash[:hosts] = Array.new
lhs_array.each do |element|
puts "!! #{element}"
- # all elements will be a single string, except the one that splits users and hosts
+ # all elements will be a single string, except the one that splits users and hosts
if element =~ /^\s*(\S+)\s+(\S+)\s*$/
user, host = $1, $2
raise Exception, 'found more than one whitespace delin when parsing left hand side of user spec' if currentsymbol==:hosts
@@ -82,17 +82,43 @@ puts "!! #{element}"
currentsymbol=:hosts
hash[currentsymbol] << host.gsub(/\s/, '')
elsif element =~ /\s*\S+\s*/
-
hash[currentsymbol] << element.gsub(/\s/, '')
+ else
+ raise ArgumentError, "unexpected line #{hash[:line]}"
end
end
-puts hash.to_yaml
- else
- raise ArgumentError, "unexpected line #{hash[:line]}"
end
+ puts hash.to_yaml
}
# def self.parse_user_spec(lhs, rhs)
+#puts hash[:line]
+# # should name already be set when get get here?
+# #lhs = $1
+# #rhs = $2
+# hash[:type] = 'spec'
+# hash[:commands] = rhs.gsub(/\s/, '').split(',')
+# lhs_array = lhs.split(',')
+# # every element will be a user until the hit the delim
+# currentsymbol = :users
+# hash[:users] = Array.new
+# hash[:hosts] = Array.new
+# lhs_array.each do |element|
+#puts "!! #{element}"
+# # all elements will be a single string, except the one that splits users and hosts
+# if element =~ /^\s*(\S+)\s+(\S+)\s*$/
+# user, host = $1, $2
+# raise Exception, 'found more than one whitespace delin when parsing left hand side of user spec' if currentsymbol==:hosts
+# # sweet we found the delim between user and host
+# hash[currentsymbol] << user.gsub(/\s/, '')
+# # now everything else will be a host
+# currentsymbol=:hosts
+# hash[currentsymbol] << host.gsub(/\s/, '')
+# elsif element =~ /\s*\S+\s*/
+# hash[currentsymbol] << element.gsub(/\s/, '')
+# end
+# puts hash.to_yaml
+# end
# hash[:type] = 'spec'
# hash[:commands] = rhs.gsub(/\s/, '').split(',')
# lhs_array = lhs.split(',')
@@ -112,6 +138,11 @@ puts hash.to_yaml
# end
# end
+ def self.prefetch_hook(records)
+puts "HERE!!!"
+ records
+ end
+
def self.to_line(hash)
puts "\nEntering self.to_line for #{hash[:name]}"
#puts hash.to_yaml