summaryrefslogtreecommitdiff
path: root/lib/puppet/provider/vcsrepo.rb
diff options
context:
space:
mode:
authorBruce Williams <bruce@codefluency.com>2010-03-13 12:04:57 -0800
committerBruce Williams <bruce@codefluency.com>2010-03-13 12:04:57 -0800
commit2926aca2e482b00ecaa616003f1096578f93c035 (patch)
tree7d159646d311cfa79bfeede6b930166b59427f13 /lib/puppet/provider/vcsrepo.rb
parent7d4244b35e72904e30130cad6d2258f901c16f1a (diff)
Refactor common bits to abstract provider superclass
Diffstat (limited to 'lib/puppet/provider/vcsrepo.rb')
-rw-r--r--lib/puppet/provider/vcsrepo.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/puppet/provider/vcsrepo.rb b/lib/puppet/provider/vcsrepo.rb
new file mode 100644
index 0000000..c560e93
--- /dev/null
+++ b/lib/puppet/provider/vcsrepo.rb
@@ -0,0 +1,23 @@
+require 'tmpdir'
+require 'digest/md5'
+
+# Abstract
+class Puppet::Provider::Vcsrepo < Puppet::Provider
+
+ private
+
+ # Note: We don't rely on Dir.chdir's behavior of automatically returning the
+ # value of the last statement -- for easier stubbing.
+ def at_path(&block) #:nodoc:
+ value = nil
+ Dir.chdir(@resource.value(:path)) do
+ value = yield
+ end
+ value
+ end
+
+ def tempdir
+ @tempdir ||= File.join(Dir.tmpdir, 'vcsrepo-' + Digest::MD5.hexdigest(@resource.value(:path)))
+ end
+
+end