From 4b8e7074e62900ed796cc05bb67a7561f40f899a Mon Sep 17 00:00:00 2001 From: Bruce Williams Date: Mon, 15 Mar 2010 11:16:22 -0700 Subject: ensure = latest to support reference tracking.\n\nWorking with tags, more work needed for branches (at least with git) --- lib/puppet/type/vcsrepo.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'lib/puppet/type/vcsrepo.rb') diff --git a/lib/puppet/type/vcsrepo.rb b/lib/puppet/type/vcsrepo.rb index 69c7f74..137f8cd 100644 --- a/lib/puppet/type/vcsrepo.rb +++ b/lib/puppet/type/vcsrepo.rb @@ -14,6 +14,10 @@ Puppet::Type.newtype(:vcsrepo) do feature :filesystem_types, "The provider supports different filesystem types" + feature :reference_tracking, + "The provider supports tracking revision references that can change + over time (eg, some VCS tags and branch names)" + ensurable do newvalue :present do @@ -28,6 +32,19 @@ Puppet::Type.newtype(:vcsrepo) do provider.destroy end + newvalue :latest, :required_features => [:reference_tracking] do + if provider.exists? + if provider.respond_to?(:update_references) + provider.update_references + end + reference = resource.value(:revision) || provider.revision + notice "Updating to latest '#{reference}' revision" + provider.revision = reference + else + provider.create + end + end + def retrieve prov = @resource.provider if prov -- cgit v1.2.3