Skip to content
Snippets Groups Projects
create_fairify.R 2.34 KiB
Newer Older
#' Create a "fairify" project
Dorch's avatar
Dorch committed
#'
#' Create a package ready for fairify your project.
#'
#' @inheritParams usethis::create_package
#' @param tidy if `TRUE`, run [usethis::use_testthat()], and [usethis::use_tidy_description()]
Dorch's avatar
Dorch committed
#' @param reports If `TRUE`, run `create_reports`, preparing package structure for report publications
#' @param cloud If `TRUE`, copy fairify functions for cloud capabilities
#' @param git if `TRUE`, initialise a Git repository
#' @param pkgdown if `TRUE`, initialise a pkgdown web site (See [usethis::use_pkgdown])
#' @param destdir Target directory for generated pkgdown website and reports
Dorch's avatar
Dorch committed
#' @param ... Further parameters passed to [usethis::create_package]
#'
#' @return Use for side effect.
Dorch's avatar
Dorch committed
#' @export
#'
#' @examples
Dorch's avatar
Dorch committed
#' path <- tempfile(pattern = "dir")
#' create_fairify(path, open = FALSE, git = FALSE)
Dorch's avatar
Dorch committed
#' list.files(path)
create_fairify <-
  function(path,
           tidy = TRUE,
           check_name = FALSE,
           open = rlang::is_interactive(),
Dorch's avatar
Dorch committed
           reports = TRUE,
           cloud = TRUE,
           git = TRUE,
           pkgdown = TRUE,
           destdir = "public",
           fields = list(Remotes = "git::https://forgemia.inra.fr/umr-g-eau/fairify.git"),
           ...) {
    usethis::create_package(path,
                            fields = fields,
                            open = FALSE,
                            check_name = check_name,
                            ...)
    usethis::proj_set(path)
    usethis::use_package("fairify", "Depends")

Dorch's avatar
Dorch committed
    if (cloud) update_fairify(path)
    if (tidy) {
      usethis::local_project(path)
      usethis::use_tidy_description()
    }
    if (git) {
      gert::git_init(path)
      add_gitignore(path)
      file.copy(pkg_sys(".gitlab-ci.yml"), path)

    if (reports) create_reports(path = path, git = git)

    if(pkgdown) {
      config_file <- "_pkgdown.yml"
      usethis::use_build_ignore(c(config_file, destdir, "pkgdown"))
      usethis::use_git_ignore(destdir)
      config <- list(url = NULL)
      config$template <- list(bootstrap = 5L)
      config$destination <- destdir
      writeLines(yaml::as.yaml(config), file.path(path, config_file))
    }

Dorch's avatar
Dorch committed
    message("Fairify project created")
    message("Don't forget to edit the file `inst/config.yml` for configuring the data location for your project")
    if (open) {
      usethis::proj_activate(path)
    }
Dorch's avatar
Dorch committed
  }