Path validation

We can easily set global path validation using on_path_not_exists and on_validate_path functions.

old.options <- options()

path.chain + logger: handling errors

library(path.chain)
library(logger)

log_level(ERROR)
#> ERROR [2020-09-16 23:03:37]
log_appender(appender_console)
on_path_not_exists(~ log_error("Path {.x} not exists"))

level2.b <- path_link("fileA.RData")
level2.a <- path_link("fileB.fst")
level1   <- path_link("data", list(level2.a = level2.a , level2.b = level2.b))
root     <- path_link("files", list(level1))
root$data$level2.a
#> ERROR [2020-09-16 23:03:37] Path files/data/fileB.fst not exists
#> [1] "files/data/fileB.fst"

on_path_not_exists(NULL)

root$data$level2.a
#> [1] "files/data/fileB.fst"

Check path correctness

In some cases, path may even exists, being in the same time unsuitable for our purposes. on_validate_path function was created exactly to handle such cases.

is_path_valid <- function(x) if (!grepl("\\.fst", x)) print("Invalid file")
on_validate_path(is_path_valid)

root$data$level2.a
#> [1] "files/data/fileB.fst"
root$data$level2.b
#> [1] "Invalid file"
#> [1] "files/data/fileA.RData"
options(old.options)