--- title: "Get started with rcompendium" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Get started with rcompendium} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>") ``` `rcompendium` makes easier the creation of R packages or research compendia (i.e. a predefined files/folders structure) so that users can focus on the code/analysis instead of wasting time organizing files. A full ready-to-work structure is set up with some additional features: version control, remote repository creation, CI/CD configuration (check package integrity under several OS, test code with `testthat`, and build and deploy website using `pkgdown`).
## Prerequisites Before using the package `rcompendium` you must follow these three steps.
### GIT configuration First ensure that **GIT** is correctly installed on your machine and linked to RStudio. Read the Chapter 6 of [Happy Git and GitHub for the useR](https://happygitwithr.com/install-git.html). You also need to store your GIT credentials locally (i.e. for the project) or globally (recommended). Run `gh::gh_whoami()` to see if your git and associated credentials are correctly configured. You should see something like: ``` { "name": "John Doe", "login": "jdoe", "html_url": "https://github.com/jdoe", ... } ``` Otherwise you might need to run: ```{r eval = FALSE} gert::git_config_global_set(name = "user.name", value = "John Doe") gert::git_config_global_set(name = "user.email", value = "john.doe@domain.com") gert::git_config_global_set(name = "github.user", value = "jdoe") ``` See `?gert::git_config_global_set` for further information.
### Creating a GitHub repo To create the GitHub repository directly from R, the package `rcompendium` uses the function `usethis::use_github()`, a client to the GitHub REST API. The interaction with this API required an authentication method: a **GITHUB PAT** (Personal Access Token). If you don't have a **GITHUB PAT** locally stored, you must: 1. visit the page [https://github.com/settings/tokens](https://github.com/settings/tokens) and create a new token; 2. store it in the `~/.Renviron` file by using `usethis::edit_r_environ()` and adding the following line: `GITHUB_PAT='ghp_99z9...z9'`. Run `usethis::gh_token_help()` for more information about getting and configuring a **GITHUB PAT**. If everything is well configured, you should see something like this after calling `gh::gh_whoami()`: ``` { "name": "John Doe", "login": "jdoe", "html_url": "https://github.com/jdoe", "scopes": "delete_repo, repo, workflow", "token": "ghp_99z9...z9" } ``` Then you will be able to create a GitHub repository directly from R!
### Managing credentials You can use the arguments `given`, `family`, `email`, and `orcid` directly with the functions `new_*()` and `add_*()`. But if you create a lot a projects (packages and/or compendia) it can be frustrating in the long run. An alternative way is to use **ONCE AND FOR ALL** the function `set_credentials()` to permanently store this information in the `~/.Rprofile` file. If these arguments are set to `NULL` while calling any function of the package, `rcompendium` will search their values in this file. It will save your time (it's the purpose of this package). Even if you have stored your credentials in the `~/.Rprofile` file you will always be able to modify them on-the-fly (i.e. by using credentials arguments in the functions `new_*()` and `add_*()`) or permanently by re-running `set_credentials()`.
## Usage The recommended workflow is: 1. Store your credentials with `set_credentials()` (if not already done); 2. **IMPORTANT -** Create an new empty RStudio project; 3. Run `new_package()` to create a new package structure or `new_compendium()` to create a new research compendium structure; 4. Edit some metadata in `DESCRIPTION`, `CITATION`, and `README.Rmd`; 5. Start working (add data, write and document R functions, etc.); 6. And do not forget to commit your changes.
In addition to these three setup functions (`set_credentials()`, `new_package()`, `new_compendium()`), the package `rcompendium` offers 29 other functions. These can be grouped as: - `add_*()`: functions to add/update/overwrite files, configuration settings, dependencies, badges, etc.; - `get_*()`: functions to retrieve some information (available licenses, R version, etc.). Visit the [Reference page](https://frbcesab.github.io/rcompendium/reference/index.html) for further details.
**To sum up** ```{r eval = FALSE} ## Define ONCE FOR ALL your credentials ---- rcompendium::set_credentials(given = "John", family = "Doe", email = "john.doe@domain.com", orcid = "9999-9999-9999-9999", protocol = "ssh") ## CREATE A NEW EMPTY RSTUDIO PROJECT ---- ## Create an R package structure ---- rcompendium::new_package() ## Then... ## ... edit metadata in DESCRIPTION, CITATION, README.Rmd, etc. ## ... implement and document R functions in R/ ## Update functions documentation and NAMESPACE ---- devtools::document() ## Update list of dependencies in DESCRIPTION ---- rcompendium::add_dependencies() ## Check package ---- devtools::check() ## Example: use of an add_*() function ... ## ... update 'Number of Dependencies Badge' in README.Rmd ---- rcompendium::add_dependencies_badge() ``` **N.B.** Users can also use functions from the package [`usethis`](https://usethis.r-lib.org/) to add some missing features (e.g. `data/` and package release tools).
## Resources - [Developing an R package](https://frbcesab.github.io/rcompendium/articles/developing_a_package.html) - [Working with a compendium](https://frbcesab.github.io/rcompendium/articles/working_with_a_compendium.html)
## Contributing You are welcome to contribute to the `rcompendium` project. Please read our [Contribution Guidelines](https://frbcesab.github.io/rcompendium/CONTRIBUTING.html). Please note that the `rcompendium` project is released with a [Contributor Code of Conduct](https://frbcesab.github.io/rcompendium/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms.
## Colophon This package is the result of intense discussions and feedback from the training course [Data Toolbox for Reproducible Research in Computational Ecology](https://rdatatoolbox.github.io/). `rcompendium` is largely inspired by the package [`rrtools`](https://github.com/benmarwick/rrtools) developed by [Ben Marwick _et al._](https://github.com/benmarwick) and tries to respect the standard defined by the community. **Special thanks to these developers!**