summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorJacob Helwig <jacob@puppetlabs.com>2011-04-22 11:14:36 -0700
committerJacob Helwig <jacob@puppetlabs.com>2011-04-22 11:14:36 -0700
commit89620ab51997e032ccde218de13acab9f55da4b8 (patch)
treee018525ded746d7d74018bf3c86a47a333536b96 /lib/puppet
parent2591a539481710e228e96c57b85434c1b9951c15 (diff)
parentf21162bdbae516d2613052d35a2f8bbd34d0bf86 (diff)
downloadpuppet-89620ab51997e032ccde218de13acab9f55da4b8.tar.gz
puppet-89620ab51997e032ccde218de13acab9f55da4b8.tar.xz
puppet-89620ab51997e032ccde218de13acab9f55da4b8.zip
Merge branch 'tickets/2.7.next/6368-files-autorequire-nearest-ancestor-directory' into 2.7.next
* tickets/2.7.next/6368-files-autorequire-nearest-ancestor-directory: (#6368) Make the File type autorequire its nearest ancestor directory
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/type/file.rb10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/puppet/type/file.rb b/lib/puppet/type/file.rb
index 715836b22..1790c5e92 100644
--- a/lib/puppet/type/file.rb
+++ b/lib/puppet/type/file.rb
@@ -257,11 +257,17 @@ Puppet::Type.newtype(:file) do
newvalues(:first, :all)
end
- # Autorequire any parent directories.
+ # Autorequire the nearest ancestor directory found in the catalog.
autorequire(:file) do
basedir = ::File.dirname(self[:path])
if basedir != self[:path]
- basedir
+ parents = []
+ until basedir == parents.last
+ parents << basedir
+ basedir = File.dirname(basedir)
+ end
+ # The filename of the first ancestor found, or nil
+ parents.find { |dir| catalog.resource(:file, dir) }
else
nil
end