blob: b3f926caaf669fed4688aef6d7490bf7cf1fb34b [file] [log] [blame]
Puppet::Type.newtype(:append_line) do
desc <<-EOT
Type that can append a line to a file if it does not already contain it.
Example:
append_line { 'sudo_rule':
path => '/etc/sudoers',
line => '%admin ALL=(ALL) ALL',
}
EOT
ensurable do
defaultto :present
newvalue(:present) do
provider.create
end
end
newparam(:name, :namevar => true) do
desc 'arbitrary name used as identity'
end
newparam(:line) do
desc 'The line to be appended to the path.'
end
newparam(:path) do
desc 'File to possibly append a line to.'
validate do |value|
unless (Puppet.features.posix? and value =~ /^\//) or (Puppet.features.microsoft_windows? and (value =~ /^.:\// or value =~ /^\/\/[^\/]+\/[^\/]+/))
raise(Puppet::Error, "File paths must be fully qualified, not '#{value}'")
end
end
end
validate do
unless self[:line] and self[:path]
raise(Puppet::Error, "Both line and path are required attributes")
end
end
end