Issue #4885 has been updated by Nigel Kersten.
Daniel Pittman wrote: > Nigel Kersten wrote: > > Daniel Pittman wrote: > > > > That feels quite horrible to me, and significantly worse than the use of > > "~" to represent the module on the server. > > ...because there is no ambiguity in `/foo` being evaluated on the client and > `~/foo` being evaluated on the master, right? Not none :) I totally take your point, but you can't argue against "~" and offer the "/foo" vs "foo" as an option. Maybe we're overthinking this: `source => modules://foo/bar` That cuts down on a lot of characters, keeps the protocol identification, removes the somewhat annoying 'modules' part, but still means you need to type the local $module_name into every reference. I just think we need a radically simpler syntax for saying "this file in the current module" as that's the most common case. If people think this original proposal is fatally flawed, I'm happy to reject it and simply outline the requirements I'd like to see fulfilled. ---------------------------------------- Feature #4885: Simplify the syntax for specifying file paths in modules using a '~' https://projects.puppetlabs.com/issues/4885#change-55401 Author: Nigel Kersten Status: Needs Decision Priority: Normal Assignee: Category: Target version: Telly Affected Puppet version: Keywords: Branch: There is too much redundant info in puppet file source specifications in modules. <pre> file { "ugly": source => "puppet:///modules/foo/bar", } </pre> Additionally, we're inconsistent with our template() and file() functions. template() takes either a path relative to the modulepath, dereferencing to "templates" sub-directories of the module or an absolute path. file() takes an absolute path only. I suggest (after a flash of inspiration from Patrick on the mailing list) we use the '~' syntax in a standard unix-y way to refer to module locations as follows. Each class mentioned below corresponds to a module. File source: Reference: $modulepath/modules/foo/files/bar <pre> class foo { file { "booyah": source => "~/bar", } } class notfoo { file { "booyah2": source => "~foo/bar", } } </pre> Template function: Reference: $modulepath/modules/foo/templates/bar.erb <pre> class foo { file { "booyah": content => template("~/bar.erb"), } } class notfoo { file { "booyah2": content => template("~foo/bar.erb"), } } </pre> File function: Reference: $modulepath/modules/foo/files/bar <pre> class foo { file { "booyah": content => file("~/bar"), } } class notfoo { file { "booyah2": content => file("~foo/bar"), } } </pre> I believe we should be able to make this change without breaking any of the existing behavior. I do believe we should aim to deprecate the old template function, but that can be a separate discussion. I haven't actually spent time ensuring this is possible. This is just what I would like to see. Mailing list thread references so we don't re-hash the same questions over again unless needed: http://groups.google.com/group/puppet-dev/browse_frm/thread/688050b8f0668ff2 http://groups.google.com/group/puppet-users/browse_frm/thread/688050b8f0668ff2 (was cross-posted, which never works out well. ) -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://projects.puppetlabs.com/my/account -- You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en.
