summaryrefslogtreecommitdiff
path: root/lib/puppet/provider/vcsrepo/cvs.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/provider/vcsrepo/cvs.rb')
-rw-r--r--lib/puppet/provider/vcsrepo/cvs.rb12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/puppet/provider/vcsrepo/cvs.rb b/lib/puppet/provider/vcsrepo/cvs.rb
index c42136e..85178f1 100644
--- a/lib/puppet/provider/vcsrepo/cvs.rb
+++ b/lib/puppet/provider/vcsrepo/cvs.rb
@@ -3,9 +3,9 @@ require File.join(File.dirname(__FILE__), '..', 'vcsrepo')
Puppet::Type.type(:vcsrepo).provide(:cvs, :parent => Puppet::Provider::Vcsrepo) do
desc "Supports CVS repositories/workspaces"
- commands :cvs => 'cvs'
+ optional_commands :cvs => 'cvs'
defaultfor :cvs => :exists
- has_features :gzip_compression, :reference_tracking
+ has_features :gzip_compression, :reference_tracking, :modules
def create
if !@resource.value(:source)
@@ -25,6 +25,10 @@ Puppet::Type.type(:vcsrepo).provide(:cvs, :parent => Puppet::Provider::Vcsrepo)
File.directory?(directory)
end
+ def working_copy_exists?
+ File.directory?(File.join(@resource.value(:path), 'CVS'))
+ end
+
def destroy
FileUtils.rm_rf(@resource.value(:path))
end
@@ -97,7 +101,9 @@ Puppet::Type.type(:vcsrepo).provide(:cvs, :parent => Puppet::Provider::Vcsrepo)
# When the source:
# * Starts with ':' (eg, :pserver:...)
def module_name
- if (source = @resource.value(:source))
+ if (m = @resource.value(:module))
+ m
+ elsif (source = @resource.value(:source))
source[0, 1] == ':' ? File.basename(source) : '.'
end
end