R/find_used.R

Defines functions find_used_packages

find_used_packages <- function(script_location){
  script <- readLines(script_location)

  called <- grep('library\\(|require\\(',script,value = TRUE)

  potentially_called <- gsub(' ','',as.character(
    sapply(called,function(x){
      strsplit(gsub('library\\(|require\\(|[^[:alnum:][:space:]]','',x),'\\)')[[1]][1]
    })
  ))

  potentially_direct <- as.character(
    unique(
    do.call(rbind,(
      lapply(grep('::',script,value = TRUE),function(x){
        all_direct <- grep('::',strsplit(x,'[^[:alnum:]:\\:\\::]')[[1]],value=TRUE)
        data.frame('direct_packages'=do.call(c,lapply(all_direct,function(y){
          strsplit(y,'::')[[1]][1]
        })))
      })
    )
    )$direct_packages
    )
  )

  identified <- unique(c(potentially_called,potentially_direct))

  all <- unique(
    c(
      as.character(data.frame(available.packages())$Package),
      unlist(lapply(.libPaths(),list.files))
    )
  )

  return(identified[identified%in%all])
}
statisticiansix/dockerise documentation built on Nov. 5, 2019, 9:20 a.m.