Files
puppet-sabayon/lib/puppet/provider/entropy_repo/file.rb

73 lines
1.7 KiB
Ruby

Puppet::Type.type(:entropy_repo).provide(:file) do
desc 'File provider for Entropy Repositories'
defaultfor operatingsystem: :sabayon
mk_resource_methods
def type_prefix
if @property_hash[:repo_type] == 'enman'
'enman_'
else
''
end
end
def enabled=(value)
enabled_filename = "/etc/entropy/repositories.conf.d/entropy_#{type_prefix}#{@property_hash[:name]}"
disabled_filename = "/etc/entropy/repositories.conf.d/_entropy_#{type_prefix}#{@property_hash[:name]}"
if value == 'true' || value == :true
if File.exist?(disabled_filename)
File.rename(disabled_filename, enabled_filename)
end
else
if File.exist?(enabled_filename)
File.rename(enabled_filename, disabled_filename)
end
end
@property_hash[:enabled] = value
end
def self.instances
repos = Dir.entries('/etc/entropy/repositories.conf.d/')
repos.map { |r|
if r == '.' || r == '..'
nil
elsif r =~ %r{\.example$}
nil
elsif r !~ %r{^_?entropy_}
nil
else
matches = %r{^(_)?entropy_(enman_)?(.*)$}.match(r)
enabled = matches[1].nil? ? 'true' : 'false'
type = (matches[2] == 'enman_') ? 'enman' : 'entropy'
name = matches[3]
repo = {
name: name,
repo_type: type,
enabled: enabled,
provider: :entropy_repo,
}
new(repo)
end
}.compact
end
def self.prefetch(resources)
repos = instances
resources.each do |name, _resource|
if provider = repos.find { |r| r.name == name }
resources[name].provider = provider
end
end
end
end
# vim: set ts=2 shiftwidth=2 expandtab :