38 lines
1.2 KiB
Ruby
38 lines
1.2 KiB
Ruby
|
require 'puppet/provider/parsedfile'
|
||
|
|
||
|
Puppet::Type.type(:pgconf).provide(
|
||
|
:parsed,
|
||
|
:parent => Puppet::Provider::ParsedFile,
|
||
|
:default_target => '/etc/postgresql.conf',
|
||
|
:filetype => :flat
|
||
|
) do
|
||
|
desc "Set key/values in postgresql.conf."
|
||
|
|
||
|
text_line :comment, :match => /^\s*#/
|
||
|
text_line :blank, :match => /^\s*$/
|
||
|
|
||
|
record_line :parsed,
|
||
|
:fields => %w{name value comment},
|
||
|
:optional => %w{comment},
|
||
|
:match => /^\s*(\w+)\s*=?\s*(.*?)(?:\s*#\s*(.*))?\s*$/,
|
||
|
:to_line => proc { |h|
|
||
|
|
||
|
# simple string and numeric values don't need to be enclosed in quotes
|
||
|
dontneedquote = h[:value].match(/^(\w+|[0-9.-]+)$/)
|
||
|
dontneedequal = h[:name].match(/^(include|include_if_exists)$/i)
|
||
|
|
||
|
str = h[:name].downcase # normalize case
|
||
|
str += dontneedequal ? ' ' : ' = '
|
||
|
str += "'" unless dontneedquote && !dontneedequal
|
||
|
str += h[:value]
|
||
|
str += "'" unless dontneedquote && !dontneedequal
|
||
|
str += " # #{h[:comment]}" unless (h[:comment].nil? or h[:comment] == :absent)
|
||
|
str
|
||
|
},
|
||
|
:post_parse => proc { |h|
|
||
|
h[:name].downcase! # normalize case
|
||
|
h[:value].gsub!(/(^'|'$)/, '') # strip out quotes
|
||
|
}
|
||
|
|
||
|
end
|