## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>", eval = FALSE) ## ----------------------------------------------------------------------------- # install.packages("courieR") ## ----------------------------------------------------------------------------- # install.packages(c("shiny", "bslib", "bsicons", "DT")) ## ----------------------------------------------------------------------------- # library(courieR) # # routes <- find_routes() # routes # #> version rscript_path is_current # #> 1 4.4.2 C:/Program Files/R/R-4.4.2/bin/x64/Rscript.exe TRUE # #> 2 4.3.1 C:/Users/you/AppData/Local/Programs/R/R-4.3.1/bin/... FALSE # #> 3 4.1.3 C:/Users/you/Documents/R/R-4.1.3/bin/... FALSE ## ----------------------------------------------------------------------------- # routes <- find_routes(search_paths = "/opt/custom-r/bin/Rscript") ## ----------------------------------------------------------------------------- # # scan the first (newest) R # src_pkgs <- manifest(rscript_path = routes$rscript_path[1]) # head(src_pkgs[, c("package", "version", "source")]) # #> package version source # #> 1 broom 1.0.7 CRAN # #> 2 callr 3.7.6 CRAN # #> 3 courieR 0.2.0 GitHub # #> 4 ggplot2 3.5.1 CRAN # #> 5 glue 1.8.0 CRAN # #> 6 stringr 1.5.1 CRAN ## ----------------------------------------------------------------------------- # my_pkgs <- manifest() # nrow(my_pkgs) # #> [1] 312 ## ----------------------------------------------------------------------------- # user_pkgs <- src_pkgs[is.na(src_pkgs$priority) | !(src_pkgs$priority %in% c("base", "recommended")), ] ## ----------------------------------------------------------------------------- # src_pkgs <- manifest(rscript_path = routes$rscript_path[2]) # old R # tgt_pkgs <- manifest(rscript_path = routes$rscript_path[1]) # new R # # comp <- inventory(src_pkgs, tgt_pkgs) ## ----------------------------------------------------------------------------- # # packages in source but missing from target # nrow(comp$missing) # #> [1] 47 # # # packages where source has a newer version # nrow(comp$outdated) # #> [1] 12 # # # packages at the same version in both # nrow(comp$same) # #> [1] 201 ## ----------------------------------------------------------------------------- # comp$missing[, c("package", "version", "source")] # #> package version source # #> 1: bookdown 0.39 CRAN # #> 2: brms 2.21.0 CRAN # #> 3: officer 0.6.6 CRAN # #> ... # # comp$outdated[, c("package", "version_src", "version_tgt", "source")] # #> package version_src version_tgt source # #> 1: ggplot2 3.5.1 3.4.4 CRAN # #> 2: tibble 3.2.1 3.2.0 CRAN ## ----------------------------------------------------------------------------- # result <- ship( # source_path = routes$rscript_path[2], # old R — package source # target_path = routes$rscript_path[1] # new R — install destination # ) ## ----------------------------------------------------------------------------- # result <- ship( # source_path = routes$rscript_path[2], # target_path = routes$rscript_path[1], # dry_run = TRUE # ) # # # review the plan before anything is installed # print(result$plan) # #> package action pak_spec # #> 1: bookdown install bookdown # #> 2: brms install brms # #> 3: ggplot2 upgrade ggplot2 # #> ... ## ----------------------------------------------------------------------------- # result <- ship( # source_path = routes$rscript_path[2], # target_path = routes$rscript_path[1], # upgrade = TRUE # ) ## ----------------------------------------------------------------------------- # # summary counts # result$summary # #> $installed 47 # #> $upgraded 12 # #> $failed 1 # #> $skipped 0 # # # per-package results # result$results[result$results$status == "error", c("package", "message")] # #> package message # #> 1: rJava installation of rJava failed... ## ----------------------------------------------------------------------------- # # mixed-source example — all handled automatically # result$plan[, c("package", "source", "pak_spec")] # #> package source pak_spec # #> 1: ggplot2 CRAN ggplot2 # #> 2: courieR GitHub lennon-li/courieR # #> 3: DESeq2 Bioconductor bioc::DESeq2 ## ----------------------------------------------------------------------------- # library(courieR) # # routes <- find_routes() # old_r <- routes$rscript_path[!routes$is_current][1] # new_r <- routes$rscript_path[routes$is_current] # # # dry run # ship(source_path = old_r, target_path = new_r, dry_run = TRUE, upgrade = TRUE) # # # for real # result <- ship(source_path = old_r, target_path = new_r, upgrade = TRUE) # result$summary ## ----------------------------------------------------------------------------- # r_a <- routes$rscript_path[1] # r_b <- routes$rscript_path[2] # # # push everything A has to B # ship(source_path = r_a, target_path = r_b, upgrade = TRUE) # # # push everything B has to A # ship(source_path = r_b, target_path = r_a, upgrade = TRUE) ## ----------------------------------------------------------------------------- # src <- manifest(rscript_path = old_r) # tgt <- manifest(rscript_path = new_r) # comp <- inventory(src, tgt) # # # only migrate CRAN packages — skip GitHub/unknown sources # cran_missing <- comp$missing[comp$missing$source == "CRAN", ] # cat(nrow(cran_missing), "CRAN packages to install\n") ## ----------------------------------------------------------------------------- # pkgs <- manifest(rscript_path = routes$rscript_path[1]) # write.csv(pkgs[, c("package", "version", "source")], "my_packages.csv", row.names = FALSE) ## ----------------------------------------------------------------------------- # saved <- read.csv("my_packages.csv", stringsAsFactors = FALSE) # # pak installs from a character vector of package names # pak::pkg_install(saved$package) ## ----------------------------------------------------------------------------- # install.packages(c("shiny", "bslib", "bsicons", "DT")) # open_hub()