## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE ) ## ----setup, message = FALSE--------------------------------------------------- # library(logrx) # library(stringr) # library(dplyr) # library(tidyr) # library(renv) ## ----run_axecute, echo = TRUE------------------------------------------------- # 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) ## ----read_logfile, warning = FALSE, error = TRUE------------------------------ try({ # parsedFile <- read_log_file(filePath) }) ## ----gen_lockfile, error = TRUE----------------------------------------------- try({ # 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) # # } })