Make gzip compression and bare repositories explicit features

This commit is contained in:
Bruce Williams
2010-03-14 16:48:19 -07:00
parent 1c8c9bf870
commit 9304bc707e
3 changed files with 18 additions and 15 deletions

View File

@@ -5,6 +5,7 @@ Puppet::Type.type(:vcsrepo).provide(:cvs, :parent => Puppet::Provider::Vcsrepo)
commands :cvs => 'cvs'
defaultfor :cvs => :exists
has_features :gzip_compression
def create
if !@resource.value(:source)

View File

@@ -5,6 +5,7 @@ Puppet::Type.type(:vcsrepo).provide(:git, :parent => Puppet::Provider::Vcsrepo)
commands :git => 'git'
defaultfor :git => :exists
has_features :bare_repositories
def create
if !@resource.value(:source)
@@ -47,10 +48,6 @@ Puppet::Type.type(:vcsrepo).provide(:git, :parent => Puppet::Provider::Vcsrepo)
def working_copy_exists?
File.directory?(File.join(@resource.value(:path), '.git'))
end
def exists?
bare_exists? || working_copy_exists?
end
private

View File

@@ -3,33 +3,38 @@ require 'pathname'
Puppet::Type.newtype(:vcsrepo) do
desc "A local version control repository"
feature :gzip_compression,
"The provider supports explicit GZip compression levels"
feature :bare_repositories,
"The provider differentiates between bare repositories
and those with working copies",
:methods => [:bare_exists?, :working_copy_exists?]
ensurable do
defaultvalues
newvalue :bare do
newvalue :bare, :required_features => [:bare_repositories] do
provider.create
end
def retrieve
prov = @resource.provider
if prov
if prov.respond_to?(:bare_exists?)
if prov.respond_to?(:working_copy_exists?) && prov.working_copy_exists?
if prov.class.feature?(:bare_repositories)
if prov.working_copy_exists?
:present
elsif prov.respond_to?(:bare_exists?) && prov.bare_exists?
elsif prov.bare_exists?
:bare
else
:absent
end
else
if prov.exists?
:present
else
:absent
end
prov.exists? ? :present : :absent
end
else
:absent
raise Puppet::Error, "Could not find provider"
end
end
@@ -59,7 +64,7 @@ Puppet::Type.newtype(:vcsrepo) do
newvalue(/^\S+$/)
end
newparam :compression do
newparam :compression, :required_features => [:gzip_compression] do
desc "Compression level (used by CVS)"
validate do |amount|
unless Integer(amount).between?(0, 6)