To make it easier for users of your type, you can use autorequire to avoid tediously specifying a lot of explicit relationships in longhand between resources. The autorequire method establishes implicit ordering between resources in the catalog. A typical example of this would be filing resources depending on their parent directories.
For example, in our type, if the source parameter is a file path, then we should ensure the corresponding file resource is managed first, as shown in the following code:
Puppet::Type.newtype(:mynewtype) do ... autorequire(:file) do self[:source] end ... end
Manually specified dependencies in the Puppet DSL have a higher precedence for the compiler than the implicit ...