starters
starters copied to clipboard
Custom templates for DESCRIPTION, .Rproj, README.Rmd etc
Enable people to define a custom templates dir to search first, before relying on devtools defaults
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
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/.
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
But to get started more quickly one can rely on usethis
/pRojects
defaults anyway?
yeah
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:
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
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.
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"))
}
ah yes that's another way to imagine what the template package actually is. 🤔
it'd be lockedev
:wink:
To be tackled once the "rest" is more stable.
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 oncreatePackageProject()
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 thestarters
code. So not an issue to be solved soon.