R/exportPackr.R

Defines functions exportPackr packName

Documented in exportPackr

packName <- function(output_folder, tool, datapack_name, extension) {
  paste0(
    output_folder,
    if (is.na(stringr::str_extract(output_folder, "/$"))) {
      "/"
    } else {
    },
    tool, "_",
    datapack_name, "_",

    format(Sys.time(), "%Y%m%d%H%M%S"),
    extension
  )
}


#' @export
#' @title Export output.
#'
#' @description
#' Exports a datapackr output to specified filepath.
#'
#' @param data Data object to export. Can be either a dataframe or an Openxlsx
#' Workbook object.
#' @param tool File prefix to be applied in output filename, as follows:
#'   \describe{
#'     \item{\code{Data Pack}}{Openxlsx Workbook object containing Data Pack.}
#'     \item{\code{SUBNAT IMPATT}}{Data frame containing SUBNAT/IMPATT data.}
#'     \item{\code{Results Archive}}{List object containing results archive.}
#'     \item{\code{OPU Data Pack}}{Openxlsx Workbook object containing OPU Data Pack.}
#'     \item{\code{Spectrum Example}}{Data frame containing example Spectrum output.}
#' }
#' @inheritParams datapackr_params
#'
exportPackr <- function(data, output_folder, tool, datapack_name) {


  if (tool %in% c("Data Pack", "OPU Data Pack", "PSNUxIM", "Target Setting Tool")) {
    if (!inherits(data, "Workbook")) {
      stop("Output type and data do not match!")
    }

    output_file_name <- packName(output_folder, tool, datapack_name, extension = ".xlsx")

    openxlsx::saveWorkbook(wb = data, file = output_file_name, overwrite = TRUE)
  } else if (tool %in% c("SUBNAT IMPATT", "Spectrum Example", "DATIM Export File")) {
    if (!inherits(data, c("data.frame"))) {
      stop("Output type and data do not match!")
    }

    output_file_name <- packName(output_folder, tool, datapack_name, extension = ".csv")

    utils::write.csv(data, output_file_name, row.names = FALSE)
  } else if (tool %in% c("Results Archive")) {
    if (!inherits(data, "list")) {
      stop("Output type and data do not match!")
    }

    output_file_name <- packName(output_folder, tool, datapack_name, extension = ".rds")

    saveRDS(data, output_file_name)
  }

  interactive_print(paste0("Successfully saved ", tool, " to ", output_file_name))
  #Return this for testing purposes
  output_file_name
}
pepfar-datim/datapackr documentation built on April 14, 2024, 10:35 p.m.