Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 18 additions & 10 deletions R/create.R
Original file line number Diff line number Diff line change
@@ -1,23 +1,31 @@
#' Create a quarto project
#'
#' This function calls `quarto create project <type> <name>`. It will create a
#' new directory with the project name and add some skeletons files for the
#' project type chosen.
#' This function calls `quarto create project <type> <name>`. It creates a new
#' directory with the project name, inside the requested parent directory, and
#' adds some starter files that are appropriate to the project type.
#'
#' # Quarto version required
#'
#' This function require Quarto 1.4 or higher. Use [`quarto_version()`]to check
#' the version of Quarto detected.
#' This function requires Quarto 1.4 or higher. Use [quarto_version()] to see
#' your current Quarto version.
#'
#' @param type The type of project to create. As of 1.4, it can be one of
#' @param type The type of project to create. As of Quarto 1.4, it can be one of
#' `r paste0("\\code{", paste(quarto_project_type, collapse = "}, \\code{"),"}")`.
#' @param name The name of the project and the directory that will be created.
#' @param dir The directory where to create the new Quarto project.
#' @param dir The directory in which to create the new Quarto project, i.e. the
#' parent directory.
#'
#' @seealso Quarto documentation on [Quarto projects](https://quarto.org/docs/projects/quarto-projects.html)
#'
#' @inheritParams quarto_render
#' @inheritParams quarto_add_extension
#' @param no_prompt Do not prompt to approve the creation of the new project
#' folder.
#'
#' @examples
#' \dontrun{
#' quarto_create_project("my-first-quarto-project", dir = "~/tmp")
#' }
#'
#'
#' @export
quarto_create_project <- function(name, type = "default", dir = ".", no_prompt = FALSE, quiet = FALSE, quarto_args = NULL) {
Expand All @@ -32,14 +40,14 @@ quarto_create_project <- function(name, type = "default", dir = ".", no_prompt =
"This will create a new Quarto {.emph {type}} project as a folder named {.strong {name}} in {.path {xfun::normalize_path(dir)}}."
))
prompt_value <- tolower(readline(sprintf("Do you want to proceed (Y/n)? ")))
if (!prompt_value %in% "y") {
if (!prompt_value %in% c("", "y")) {
cli::cli_abort("Operation aborted.")
}
}

quarto_bin <- find_quarto()

args <- c("project", type, name, "--no-prompt", "--no-open", if (is_quiet(quiet)) cli_arg_quiet(), quarto_args = NULL)
args <- c("project", type, name, name, "--no-prompt", "--no-open", if (is_quiet(quiet)) cli_arg_quiet(), quarto_args = NULL)

owd <- setwd(dir)
on.exit(setwd(owd), add = TRUE, after = FALSE)
Expand Down
25 changes: 17 additions & 8 deletions man/quarto_create_project.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 0 additions & 8 deletions tests/testthat/test-create.R
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
test_that("Create a quarto project", {
skip_if_no_quarto("1.4")
# TODO: Fix the test once issue solve upstream
# - https://github.com/quarto-dev/quarto-cli/issues/8809
# - https://github.com/quarto-dev/quarto-r/issues/153
skip_if_quarto("1.5")
expect_snapshot(
error = TRUE,
quarto_create_project()
Expand All @@ -16,10 +12,6 @@ test_that("Create a quarto project", {

test_that("Create a quarto project in another directory", {
skip_if_no_quarto("1.4")
# TODO: Fix the test once issue solve upstream
# - https://github.com/quarto-dev/quarto-cli/issues/8809
# - https://github.com/quarto-dev/quarto-r/issues/153
skip_if_quarto("1.5")
tempdir <- withr::local_tempdir()
curr_wd <- getwd()
expect_no_error(quarto_create_project(name = "test-project", dir = tempdir, quiet = TRUE))
Expand Down