Issue #4885 has been updated by Justin Stoller.

Forgive my ignorance if this wouldn't be a backwards compatible change or the 
parser doesn't have this information available to it, but could we simply drop 
the `puppet://server/modules/$module_name/` and consider relative paths 
relative to the module's file directory? 

Then you could prepend `puppet://server/` if you needed to specify a different 
file server? Perhaps `modules/$module_name/` if you needed a file outside of 
the current module` and `puppet://server/modules/$module_name/` if you need 
files from a different module on a different file server? ...but I don't think 
either of those are recommended.

It seems like relative paths from the current module's file directory would 
make the best practice the easiest thing to do.


ps.
If context switching is important between templates and files you could make 
them relative to the module's root directory (`source => 'files/my-file.rb', or 
content => template('templates/my-template.erb'`) but it doesn't seem like too 
hard of distinction for new users to make.

----------------------------------------
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.

Reply via email to