https://github.com/feddelegrand7/rfold
Allow R developers to have multiple R folders inside an R package
https://github.com/feddelegrand7/rfold
Last synced: 8 days ago
JSON representation
Allow R developers to have multiple R folders inside an R package
- Host: GitHub
- URL: https://github.com/feddelegrand7/rfold
- Owner: feddelegrand7
- License: other
- Created: 2023-10-22T20:19:58.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-02-15T08:23:44.000Z (about 1 year ago)
- Last Synced: 2025-04-02T10:39:29.165Z (12 days ago)
- Language: R
- Size: 89.8 KB
- Stars: 23
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- jimsghstars - feddelegrand7/rfold - Allow R developers to have multiple R folders inside an R package (R)
README
# rfold
[](https://CRAN.R-project.org/package=rfold)
[](https://cran.r-project.org/package=rfold)
[](https://cran.r-project.org/package=rfold)An introductory video can be found
[here](https://www.youtube.com/watch?v=q-GT7q0v_YA&ab_channel=RforPROD)The goal of the `rfold` package is to allow `R` developers to work with
many `R` directories within an `R` package. A considerable limitation
regarding `R` packages development, is that one cannot create other
directories/sub directories (other than the `R` directory) and bind them
to the package ecosystem.Using `rfold`, you can create as many directories/sub directories
(**outside of your `R` directory**).The `rfold()` function will list all the `.R` scripts available outside
of the `R` folder, assign their names to `.Rbuildignore` file and
transfer them within the main `R` directory, giving you all the
flexibility you need to organize your package into many
directories/sub-directories.## Working with `test` files
Using `rfold`, you can arrange your test file the way you want, you can
for example put your test and R scripts in one folder. To do so, you
need to append the `test-` word to the name of your test files. For
example, `test-myapi.R`. This way `rfold` will recognize it as a test
file and move it within the correct folder.At the moment, `rfold` works only with the `testthat` framework, feel
free to open an issue if other test framework should be supported## Installation
You can install the development version of `rfold` with:
``` r
install.packages("rfold")
```## Usage
Just use `rfold::rfold()` before building or documenting your package
and you’re all set. If you’re tired of running `rfold::rfold()`, then
`devtools::load_all()` each time, you can create a function that does
both, for example:``` r
rfold_load_all <- function() {
rfold::rfold()
devtools::load_all()
}
```This way, you’ll be sure to work with the last state of your package.
## Example
Suppose that within this package, I would decide to have the following
structure:``` r
fs::dir_tree()
```## .
## +-- api
## | +-- api_call.R
## | \-- test-api_call.R
## +-- DESCRIPTION
## +-- main
## | +-- main1.R
## | +-- main2.R
## | \-- test-main
## | +-- test-file1.R
## | \-- test-file2.R
## +-- man
## +-- NAMESPACE
## +-- R
## +-- README.md
## +-- README.Rmd
## +-- rfoldtester.Rproj
## +-- tests
## | +-- testthat
## | \-- testthat.R
## \-- utilities
## +-- test-utils1.R
## +-- test-utils2.R
## +-- utils1.R
## \-- utils2.RRunning `rfold::rfold()`, all the external (external to the `R` folder)
`.R` scripts will be moved within the `R` or `tests` folder, depending
on the type of file (note that if the `tests` folder is not available,
`rfold` will create it for you):``` r
rfold::rfold()
```## v Setting active project to 'C:/Users/Administrateur/Desktop/rfoldtester'i Copying the following R files with prefix 'DO_NOT_EDIT_' into the R folder: api/api_call.R, main/main1.R, main/main2.R, utilities/utils1.R, utilities/utils2.R
## i Copying the following tests files with prefix 'DO_NOT_EDIT_' into the tests/testthat folder: api/test-api_call.R, main/test-main/test-file1.R, main/test-main/test-file2.R, utilities/test-utils1.R, utilities/test-utils2.RAs such, we will get now the following structure:
``` r
fs::dir_tree()
```## .
## +-- api
## | +-- api_call.R
## | \-- test-api_call.R
## +-- DESCRIPTION
## +-- main
## | +-- main1.R
## | +-- main2.R
## | \-- test-main
## | +-- test-file1.R
## | \-- test-file2.R
## +-- man
## +-- NAMESPACE
## +-- R
## | +-- DO_NOT_EDIT_api_call.R
## | +-- DO_NOT_EDIT_main1.R
## | +-- DO_NOT_EDIT_main2.R
## | +-- DO_NOT_EDIT_utils1.R
## | \-- DO_NOT_EDIT_utils2.R
## +-- README.md
## +-- README.Rmd
## +-- rfoldtester.Rproj
## +-- tests
## | +-- testthat
## | | +-- test-DO_NOT_EDIT_api_call.R
## | | +-- test-DO_NOT_EDIT_file1.R
## | | +-- test-DO_NOT_EDIT_file2.R
## | | +-- test-DO_NOT_EDIT_utils1.R
## | | \-- test-DO_NOT_EDIT_utils2.R
## | \-- testthat.R
## \-- utilities
## +-- test-utils1.R
## +-- test-utils2.R
## +-- utils1.R
## \-- utils2.RNotice, that script names that will be transferred to the `R` folder
have their name prefixed with the character `DO_NOT_EDIT`. You can tweak
this feature or deactivate it using the `script_name_prefix` parameter
of the `rfold()` function. Concerning the `test` file, they have to
start with `test-` word in order to be tested, as such, the
`script_name_prefix` will be appended after the `test-` part.The following comment will also be inserted at the top of each script
that will be moved with `rfold`: **\# GENERATED BY FOLD: DO NOT EDIT BY
HAND \####**There’s another parameter available, called `folders_to_ignore` which
allows you to ignore certain directories (for example `dev` directory)
when running the `rfold` function.Note also that `devtools::build()` and `devtools::document()` will only
consider the scripts available within your `R` folder.## Code of Conduct
Please note that the rfold project is released with a [Contributor Code
of
Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html).
By contributing to this project, you agree to abide by its terms.