R/repo_contents.R

Defines functions repo_contents repo_filenames repo_files

Documented in repo_contents repo_files

#' Get Repository Contents
#'
#' Retrieves Github Repository Contents/filenames
#'
#' @param repo Github repository in the order or user/repo
#' @param ... arguments passed to \code{\link{gh}}
#'
#' @return A list or a character vector of files
#' @export
#'
#' @examples
#' repo_contents("muschellij2/fslr")
repo_contents = function(repo, ...) {
  string = paste0("GET /repos/", repo, "/contents/")
  res = try(
    gh::gh(string, ...),
    silent = TRUE)
  if (inherits(res, "try-error")) {
    res = list()
  }
  if (is.character(res)) {
    if (all(res == "")) {
      res = NULL
    } else {
      res = list(res)
    }
  }
  return(res)
}


repo_filenames = function(res) {
  if (length(res) == 0) {
    files = NA
  } else {
    files = vapply(res, function(x) {
      if ("name" %in% names(x)) {
        return(x$name)
      } else {
        return(NA_character_)
      }
    },
    FUN.VALUE = NA_character_)
  }
  return(files)
}

#' @export
#' @rdname repo_contents
repo_files = function(repo, ...) {
  res = repo_contents(repo = repo, ...)
  out = repo_filenames(res)
  return(out)
}
muschellij2/muschpack documentation built on March 21, 2020, 9:20 p.m.