summaryrefslogtreecommitdiff
path: root/lib/puppet/type/vcsrepo.rb
diff options
context:
space:
mode:
authorBruce Williams <bruce@codefluency.com>2010-03-14 16:48:19 -0700
committerBruce Williams <bruce@codefluency.com>2010-03-14 16:48:19 -0700
commit9304bc707e5c6f6cb5738d939d8e2af69b35149d (patch)
tree46dcc23faede9e96b05218d46bbd68cc3a79a461 /lib/puppet/type/vcsrepo.rb
parent1c8c9bf87045ef3f14ea0b83909390e728d126b3 (diff)
Make gzip compression and bare repositories explicit features
Diffstat (limited to 'lib/puppet/type/vcsrepo.rb')
-rw-r--r--lib/puppet/type/vcsrepo.rb27
1 files changed, 16 insertions, 11 deletions
diff --git a/lib/puppet/type/vcsrepo.rb b/lib/puppet/type/vcsrepo.rb
index 7616f41..aae65a1 100644
--- a/lib/puppet/type/vcsrepo.rb
+++ b/lib/puppet/type/vcsrepo.rb
@@ -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)