##' Load data from the Biomass and Allometry Database.
##'
##' The first time this is run for a given version, this function will
##' unpack the resulting zip file and load the csv files.  This might
##' take a few seconds to a minute.  Subsequent calls will be
##' the result of reading the csv.  Subsequent calls after \emph{that}
##' will be essentially instantaneous.
##'
##' BAAD data if a version is not given, or a specific version if that
##' is listed.
##' @param version Version to load.  Verion "1.0.0" corresponds to the
##'   version published in Ecology in 2015.  Other valid versions are
##'   "0.1.0", "0.2.0" and "0.9.0" which are stored on github but are
##'   of historical interest only.
##' @param path Optional path in which to store the data.  If omitted
##'   we use \code{rappdirs} to generate a reasonable path.
##' @export
##' @examples
##' \dontrun{
##' head(baad$data) ##' } baad_data <- function(version=NULL, path=NULL) { datastorr::github_release_get(baad_data_info(path), version) } ##' Information to describe how to process github releases ##' ##' @title Github release information ##' ##' @param path Optional path in which to store the data. If omitted ##' we use \code{rappdirs} to generate a reasonable path. baad_data_info <- function(path=NULL) { datastorr::github_release_info(repo="dfalster/baad", filename="baad_data.zip", read=baad_unpack, path=path) } ##' Get release versions ##' @title Get release versions ##' @param local Should we return local (TRUE) or github (FALSE) ##' version numbers? Github version numbers are pulled once per ##' session only. The exception is for ##' \code{github_release_version_current} which when given ##' \code{local=TRUE} will fall back on trying github if there are ##' no local versions. ##' @param path Optional path in which to store the data. If omitted ##' we use \code{rappdirs} to generate a reasonable path.##' ##' @export baad_data_versions <- function(local=TRUE, path=NULL) { datastorr::github_release_versions(baad_data_info(path), local) } ##' @export ##' @rdname baad_data_versions baad_data_version_current <- function(local=TRUE, path=NULL) { datastorr::github_release_version_current(baad_data_info(path), local) } ##' @export ##' @rdname baad_data baad_data_del <- function(version, path) { datastorr::github_release_del(baad_data_info(path), version) } baad_data_release <- function(description) { datastorr::github_release_create(baad_data_info(path), description=description, ...) } ## Given a filename corresponding to a downloaded resource, convert it ## into an R object. baad_unpack <- function(filename) { dest <- tempfile() files <- unzip(filename, exdir=dest) ## Some versions have a leading baad_data, while others don't, ## others are badly packaged. This is terrible, and might get ## updated later. for (tld in c("baad_data", "baad_csv", "baad")) { if (file.exists(file.path(dest, tld))) { dest <- file.path(dest, tld) break } } csv_files <- dir(dest, pattern="\\.csv$", full.names=TRUE)