Some fixes after live testing, add support for bare cloned repos
[puppet_vcsrepo.git] / lib / puppet / type / vcsrepo.rb
1 require 'pathname'
2
3 Puppet::Type.newtype(:vcsrepo) do
4   desc "A local version control repository"
5
6   ensurable do
7     defaultvalues
8
9     newvalue :bare do
10       provider.create
11     end
12
13     def retrieve
14       prov = @resource.provider
15       if prov
16         if prov.respond_to?(:working_copy_exists?) && prov.working_copy_exists?
17           :present
18         elsif prov.respond_to?(:bare_exists?) && prov.bare_exists?
19           :bare
20         else
21           :absent
22         end
23       else
24         :absent
25       end
26     end
27
28   end
29
30   newparam(:path) do
31     desc "Absolute path to repository"
32     isnamevar
33     validate do |value|
34       path = Pathname.new(value)
35       unless path.absolute?
36         raise ArgumentError, "Path must be absolute: #{path}"
37       end
38     end
39   end
40
41   newparam(:source) do
42     desc "The source URL for the repository"
43     validate do |value|
44       URI.parse(value)
45     end
46   end
47
48   newparam(:fstype) do
49     desc "Filesystem type (for providers that support it, eg subversion)"
50   end
51
52   newproperty(:revision) do
53     desc "The revision of the repository"
54     newvalue(/^\S+$/)
55   end
56
57 end