---
title: "Development"
output:
prettydoc::html_pretty:
theme: tactile
highlight: vignette
vignette: >
%\VignetteIndexEntry{Development}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
out.width = "100%",
dpi = 120
)
```
```{r setup, include=FALSE}
# Keep examples reproducible in newer R versions and set seed
RNGversion("3.6.0")
set.seed(12345)
```
## Setup `clugenr` development
Clone the package, `cd` into to the package's folder and start R:
```plaintext
$ git clone https://github.com/clugen/clugenr.git
$ cd clugenr
```
Developing `clugenr` requires [devtools], thus make sure it's installed before
continuing. Open an R prompt at the `clugenr` folder and install `clugenr`'s
development dependencies:
```R
devtools::install_dev_deps()
```
The package can be tested as follows:
```R
devtools::test()
```
There are four levels of testing, by increasing thoroughness (and slowness):
`cran`, `ci`, `normal` and `full`. The first two run by default on CRAN and CI
environments, respectively. The third one, `normal`, is the default mode when
running the tests locally, and may take some time (10-20 minutes). The last one,
`full` is more thorough and can take a few hours. It's possible to define the
tests thoroughness by setting the `CLUGENR_TEST_MODE` environment variable. For
example, to simulate how tests would run in CRAN as follows:
```R
Sys.setenv(CLUGENR_TEST_MODE = "cran")
devtools::test()
Sys.unsetenv("CLUGENR_TEST_MODE")
```
The following instruction updates the documentation, then builds and checks the
package locally:
```R
devtools::check()
```
It's also possible to define the environment in which to run the tests when
performing the check:
```R
Sys.setenv(CLUGENR_TEST_MODE = "ci")
devtools::check()
Sys.unsetenv("CLUGENR_TEST_MODE")
```
Create or update the generated documentation in `man/`, file collation and
`NAMESPACE`:
```R
devtools::document()
```
Build `clugenr`'s website (requires [pkgdown], [ggplot2], [patchwork] and
[rgl]):
```R
pkgdown::build_site()
# Can also be done with devtools::build_site()
# In either case add option `preview = F` to avoid opening the browser
```
Install the package locally with:
```R
devtools::install()
```
Check that it works:
```{r, out.width = "100%", dpi = 200}
library(clugenr)
x <- clugen(2, 5, 800, c(-1, 1), 0.6, c(4, 6), 5, 0.4, 0.5)
plot(x$points, col = x$clusters, xlab = "x", ylab = "y", asp = 1)
```
## Code style
To contribute to `clugenr`, follow the [tidyverse style guide]. Some highlights
include, but are not limited to:
* File encoding: UTF-8
* Indentation: 2 spaces (no tabs)
* Line size limit: 80 chars
* Newlines: Unix style, i.e. LF or `\n`
[devtools]: https://devtools.r-lib.org/
[pkgdown]: https://pkgdown.r-lib.org/
[ggplot2]: https://ggplot2.tidyverse.org/
[patchwork]: https://patchwork.data-imaginist.com/index.html
[rgl]: https://dmurdoch.github.io/rgl/
[tidyverse style guide]: https://style.tidyverse.org/index.html