Issue #4885 has been updated by Nigel Kersten.
Pieter van de Bruggen wrote: > My one note on this is that `~` alone technically poses some redundancy with > file-system conventions. If I write `~pvande/lib/something.rb` expecting a > reference to a file in the user `pvande`'s home directory, my expectation > will always be broken. In that sense, the `puppet` "scheme" still seems > important. I desire a better solution than having to include the puppet scheme in every reference, particularly given the vast vast majority of such references use it. You can't currently use the ~username for a local filesystem reference in file locations fwiw <pre> # puppet apply -v /tmp/test.pp Parameter source failed: Cannot use relative URLs '~nbk/.zshrc' at /tmp/test.pp:3 </pre> > My take: > > * `~module/foo.txt` -- looks like a filesystem path, not relative to a > module. > * `puppet:~module/foo.txt` -- Not bad, but doesn't quite look "right". > * `puppet://~module/foo.txt` -- This looks like most URLs, in a good way, > but conflates the server portion with the module name. > * `puppet:///~module/foo.txt` -- This is probably most "correct" as a URI, > but the triple slash is unfamiliar to many, and doesn't add much information > in the default case. I'm really not fond of any of these. ---------------------------------------- Feature #4885: Simplify the syntax for specifying file paths in modules using a '~' https://projects.puppetlabs.com/issues/4885 Author: Nigel Kersten Status: Accepted 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.
