# borrowed from https://github.com/r-lib/usethis/blob/main/tests/testthat/helper.R
proj <- new.env(parent = emptyenv())
proj_get_ <- function() proj$cur
create_local_package <- function(dir = tempfile(pattern = "testpkg"),
env = parent.frame(),
rstudio = FALSE) {
create_local_thing(dir, env, rstudio, "package")
}
create_local_project <- function(dir = tempfile(pattern = "testproj"),
env = parent.frame(),
rstudio = FALSE) {
create_local_thing(dir, env, rstudio, "project")
}
create_local_thing <- function(dir = tempfile(pattern = pattern),
env = parent.frame(),
rstudio = FALSE,
thing = c("package", "project")) {
thing <- match.arg(thing)
# if (dir.exists(dir)) {
# ui_stop("Target {ui_code('dir')} {ui_path(dir)} already exists.")
# }
old_project <- proj_get_() # this could be `NULL`, i.e. no active project
old_wd <- getwd() # not necessarily same as `old_project`
withr::defer(
{
# ui_done("Deleting temporary project: {ui_path(dir)}")
unlink(dir)
},
envir = env
)
# ui_silence(
switch(thing,
package = usethis::create_package(dir, rstudio = rstudio, open = FALSE, check_name = FALSE),
project = usethis::create_project(dir, rstudio = rstudio, open = FALSE)
)
# )
withr::defer(usethis::proj_set(old_project, force = TRUE), envir = env)
usethis::proj_set(dir)
withr::defer(
{
# ui_done("Restoring original working directory: {ui_path(old_wd)}")
setwd(old_wd)
},
envir = env
)
setwd(usethis::proj_get())
invisible(usethis::proj_get())
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.