Paths will be filtered to produce the lowest available level from a hierarchy of paths based on envsetup_environ
Usage
write_path(
lib,
filename = NULL,
envsetup_environ = Sys.getenv("ENVSETUP_ENVIRON")
)
Arguments
- lib
Object containing the paths for all environments of a directory
- filename
Name of the file you would like to write
- envsetup_environ
Name of the environment to which you would like to write. Defaults to the ENVSETUP_ENVIRON environment variable
Examples
tmpdir <- tempdir()
# account for windows
if (Sys.info()['sysname'] == "Windows") {
tmpdir <- gsub("\\", "\\\\", tmpdir, fixed = TRUE)
}
# add config for just the data location
hierarchy <- paste0("default:
paths:
data: !expr list(
DEV = file.path('",tmpdir,"', 'demo', 'DEV', 'username', 'project1', 'data'),
PROD = file.path('",tmpdir,"', 'demo', 'PROD', 'project1', 'data'))")
# write config file to temp directory
writeLines(hierarchy, file.path(tmpdir, "hierarchy.yml"))
config <- config::get(file = file.path(tmpdir, "hierarchy.yml"))
# build folder structure from config
build_from_config(config)
#> ✔ Directories built
#> /tmp/Rtmp4W5uPx/demo/
#> ├── DEV
#> │ └── username
#> │ └── project1
#> │ ├── data
#> │ ├── functions
#> │ ├── output
#> │ └── programs
#> └── PROD
#> └── project1
#> ├── data
#> ├── functions
#> ├── output
#> └── programs
# setup environment based on config
rprofile(config::get(file = file.path(tmpdir, "hierarchy.yml")))
#> Attaching paths to envsetup:paths
# find location to write mtcars.rds
write_path(data, "mtcars.rds")
#> Write Path:/tmp/Rtmp4W5uPx/demo/DEV/username/project1/data/mtcars.rds
#> [1] "/tmp/Rtmp4W5uPx/demo/DEV/username/project1/data/mtcars.rds"
# save data in data folder using write_path
saveRDS(mtcars, write_path(data, "mtcars.rds"))
#> Write Path:/tmp/Rtmp4W5uPx/demo/DEV/username/project1/data/mtcars.rds