Maintain packages with {fusen}


How to maintain a {fusen}? Can I use {fusen} with old-way packages ?

After you inflate() the “dev_history.Rmd”, your code appears twice in the package. In the “dev_history.Rmd” itself and in the correct place for it to be a package.
Maintaining such a package requires a choice:

Your first inflate() may not directly work as expected. In this case, you can continue to implement your functionnality using Option 1.

Advice 1 : Use Option 1 until you find it too complicated to be used ! I assure you, you will find the moment when you say : ok this is not possible anymore…

Advice 2 : Use git as soon as possible, this will avoid losing your work if you made some modifications in the wrong place

Option 1: Continue with the “dev_history.Rmd”

=> {fusen} itself is built as is. Each modification is added to the dedicated dev_history file and then inflated

Option 2: Maintain like a classical package

=> This is the way I add new functionalities in packages that started in the old way, or which I build in collaboration with other devs.

What about packages already built the old way ?

The “dev_history.Rmd” template only modifies files related to functions presented inside the template. This does not remove or modify previous functions, tests or vignettes, provided that names are different.

Let’s try to convince package developers with an example

#' My median
#' @param x Vector of Numeric values
#' @inheritParams stats::median
#' @return
#' Median of vector x
#' @export
#' @examples
my_median <- function(x, na.rm = TRUE) {
  if (!is.numeric(x)) {stop("x should be numeric")}
  stats::median(x, na.rm = na.rm)
test_that("my_median works properly and show error if needed", {
  expect_true(my_median(1:12) == 6.5)

That’s it!
You added a new function in your package, along with example, test and a new vignette: