require 'puppet' # provide is still unclear Puppet::Type.type(:mandriva_repository).provide(:urpmi_managed) do commands :urpmi_addmedia => "/usr/sbin/urpmi.addmedia", :urpmi_removemedia => "/usr/sbin/urpmi.removemedia", :urpmq => "/usr/bin/urpmq" def create if exists? info "already exists" return nil end begin execute([:urpmi_addmedia, @resource[:name], @resource[:url]]) rescue Puppet::ExecutionFailure => detail raise Puppet::Error, "Could not create %s %s: %s" % [@resource.class.name, @resource.name, detail] end # faire un urpmi.addmedia end def destroy unless exists? info "already absent" return nil end begin execute([:urpmi_removemedia, @resource[:name] ]) rescue Puppet::ExecutionFailure => detail raise Puppet::Error, "Could not remove %s %s: %s" % [@resource.class.name, @resource.name, detail] end end def exists? f = IO.popen('urpmq --list-media') while (l = f.gets) # http://codelikezell.com/how-to-use-ruby-variables-in-regular-expressions/ return true if (l =~ /^#{@resource[:name]}$/) end return nil end end