summaryrefslogtreecommitdiff
path: root/lib/puppet/type/vcsrepo.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/type/vcsrepo.rb')
-rw-r--r--lib/puppet/type/vcsrepo.rb17
1 files changed, 17 insertions, 0 deletions
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