Axecute a script and get the log file.
scriptPath <- tempfile()
logDir <- tempdir()
writeLines(
c(
"print('hello logrx')",
"library(dplyr)",
"count(iris, Species)"
),
con = scriptPath
)
filePath <- file.path(logDir, "log_out_parse")
axecute(scriptPath, log_name = "log_out_parse", log_path = logDir, show_repo_url = TRUE)
Later on read (and parse) previous log file as list of objects.
parsedFile <- read_log_file(filePath)
Create a renv lockfile based on the used packages mentioned in the log file.
pkgs <- parsedFile$`Used Package and Functions` %>%
transmute(package_name = str_extract(library, "(?<=package\\:).+"))
used_pkgs <- parsedFile$`Session Information`$Packages %>%
filter(package %in% pkgs$package_name)
repo_urls <- parsedFile$`Repo URLs`
temp_lockfile <- tempfile(fileext = ".lockfile")
# Create lockfile based on used packages
x <- renv::lockfile_create(
packages = c(
Package = used_pkgs$package
)
)
# Update repo URL for lockfile
lockfile_repos <- repo_urls$Name
names(lockfile_repos) <- repo_urls$URL
x <- renv::lockfile_modify(
lockfile = x,
repos = lockfile_repos
)
# Write lockfile
renv::lockfile_write(
lockfile = x,
file = temp_lockfile,
type = "custom",
)
# Update package versions based on session info
renv::record(
records = list(
digest = list(
Package = used_pkgs$package,
Version = used_pkgs$version,
Source = "Repository",
Repository = used_pkgs$source
)
),
lockfile = temp_lockfile
)
# Open the lockfile you just created to confirm it looks as expected
# uncomment the lines below to open the lockfile in RStudio
# if (require("rstudioapi") && rstudioapi::isAvailable()) {
# rstudioapi::documentOpen(temp_lockfile)
# }