-
Notifications
You must be signed in to change notification settings - Fork 2
/
package.R
63 lines (50 loc) · 1.76 KB
/
package.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#libs
library(devtools)
library(roxygen2)
#options
options(digits = 2, scipen = 2)
#update package description version automatically
readr::read_lines("DESCRIPTION") |>
stringr::str_replace("Version: .+", stringr::str_glue("Version: {Sys.Date()}")) |>
readr::write_lines("DESCRIPTION")
#make documentation
devtools::document()
#install
#for some weird reason this sometimes begins reinstalling packages for no reason I can find
devtools::install("../kirkegaard", dependencies = F)
#load
library(kirkegaard)
library(testthat)
#first time installation
if (F) {
# Function to extract packages from .R files
find_used_packages <- function(file_paths) {
# Container for all identified packages
all_packages <- character()
# Loop over each file
ns_names = c()
for (file in file_paths) {
# Read the file
lines <- readLines(file, warn = FALSE)
# Find usage of explicit namespace prefixing
ns_usage <- grep("::", lines, value = TRUE)
if (length(ns_usage) > 0) {
# Extract namespace names
ns_names <- sapply(regmatches(ns_usage, gregexpr("\\b[a-zA-Z0-9.]+::", ns_usage)), function(x) gsub("::", "", x)) |> unlist() |>
unique()
#add to collection
all_packages = c(all_packages, ns_names)
}
}
# Remove duplicates and return
return(unique(all_packages))
}
#scan all .R files, and add tidyverse
(kirkegaard_packages = c(find_used_packages(dir(pattern = ".R$", recursive = T, full.names = T)), "tidyverse"))
#not installed packages
(not_installed_packages = kirkegaard_packages[!(kirkegaard_packages %in% installed.packages()[,"Package"])] |> setdiff("kirkegaard"))
#install them
if (length(not_installed_packages) > 0) {
install.packages(not_installed_packages)
}
}