starters icon indicating copy to clipboard operation
starters copied to clipboard

Custom templates for DESCRIPTION, .Rproj, README.Rmd etc

Open stephlocke opened this issue 7 years ago • 12 comments

Enable people to define a custom templates dir to search first, before relying on devtools defaults

stephlocke avatar Mar 14 '17 12:03 stephlocke

related to usethis::use_template that I used e.g for lockedev::use_ld_github https://github.com/lockedata/lockedev/blob/master/R/use_ld_contributing.R

maelle avatar Jul 09 '18 13:07 maelle

I'm wondering whether we should encourage such templates to be stored in a package, because of usethis::use_template() using files from packages + because of ease of installation (e.g. if I create such templates for Locke Data, easy for folks to install it).

It'd be a nearly empty packages with templates below inst/.

maelle avatar Oct 24 '18 08:10 maelle

You can only make people use a package if you have a createTemplatePackageProject() fn ;)

Ultimately, yes I see teams adding extensions to pRojects in their own packages, but I would like the solution to enable referencing a template file so that folks can get started more quickly when they're not yet an adept package developer

stephlocke avatar Oct 24 '18 08:10 stephlocke

But to get started more quickly one can rely on usethis/pRojects defaults anyway?

maelle avatar Oct 24 '18 08:10 maelle

yeah

stephlocke avatar Oct 24 '18 09:10 stephlocke

but I'd create a templating function like you say and maybe at the stage of creating the template package one could indicate a directory where the templates live at the moment. :wink:

maelle avatar Oct 24 '18 09:10 maelle

so I see the future use of the things like createBasicProject() being like:

createBasicProject(..., templates_dir = system.file("templates", pkg="pRojects"), config_dir =  system.file("defaults", pkg="pRojects"))

Then when people make their own templates or wanna provide config they can either point to a dir on their machines or if they build a package they can refer to their own inst/ dir

stephlocke avatar Oct 24 '18 09:10 stephlocke

what's config as opposed to templates? packrat values, etc?

Ideally if one has a package, one could indicate that so I'd make the argument "path_or_package", if it corresponds to an installed package, then I'd use it as a package.

maelle avatar Oct 24 '18 09:10 maelle

config might be whoami info or values to fill in licenses with or boilerplate yaml etc

if one had a package (say lockeutils) I feel like they'd have a function that wraps our existing stuff but provides different default values or contents to them e.g.

createLDAnalysisProject = function(...){
createAnalysisProject(..., templates_dir = system.file("templates", pkg="lockeutils"), config_dir =  system.file("defaults", pkg="lockeutils"))
}

stephlocke avatar Oct 24 '18 09:10 stephlocke

ah yes that's another way to imagine what the template package actually is. 🤔

it'd be lockedev :wink:

maelle avatar Oct 24 '18 09:10 maelle

To be tackled once the "rest" is more stable.

maelle avatar Nov 20 '18 09:11 maelle

So I'm still not sure about just having a folder. I'd much rather rely on a package. Several elements to keep in mind.

  • the package could be created by a function from starters to help. This function would not rely on createPackageProject() I guess because it won't need any R file.
  • there are several lines in starters using templates. If there is a custom template for README.Rmd but not for something else, how do we deal with this? Ideally the package holding the custom templates would also hold non custom templates.
  • the package name would be used as an argument.
  • this issue will mean a lot of work because we e.g. use usethis::create_package() so for customizing DESCRIPTION and .Rproj we'll need to change the starters code. So not an issue to be solved soon.

maelle avatar Jan 24 '19 14:01 maelle