Skip to contents

This will create a boilerplate directory structure for a Carpentries lesson and initialize a git repository.

Usage

create_lesson(
  path,
  name = fs::path_file(path),
  rmd = TRUE,
  rstudio = rstudioapi::isAvailable(),
  open = rlang::is_interactive(),
  add_python = FALSE,
  python = NULL,
  type = c("auto", "virtualenv", "conda", "system"),
  pdf = FALSE,
  ipynb = FALSE
)

Arguments

path

the path to the new lesson folder

name

the name of the lesson. If not provided, the folder name will be used.

rmd

logical indicator if the lesson should use R Markdown (TRUE, default), or if it should use Markdown (FALSE). Note that lessons can be converted to use R Markdown at any time by adding a file with the .Rmd file extension in the lesson.

rstudio

create an RStudio project (defaults to if RStudio exits)

open

if interactive, the lesson will open in a new editor window.

add_python

if set to TRUE, will add Python as a dependency for the lesson. See use_python() for details. Defaults to FALSE.

python

the path to the version of Python to be used. The default, NULL, will prompt the user to select an appropriate version of Python in interactive sessions. In non-interactive sessions, renv will attempt to automatically select an appropriate version. See renv::use_python() for more details.

type

the type of Python environment to use. When "auto", the default, virtual environments will be used. See renv::use_python() for more details.

pdf

if TRUE, a PDF version of each episode will be built.

ipynb

if TRUE, a Jupyter Notebook version of each episode will be built.

Value

the path to the new lesson

Examples

tmp <- tempfile()
on.exit(unlink(tmp))
lsn <- create_lesson(tmp, name = "This Lesson", open = FALSE)
#> → Creating Lesson in /tmp/RtmpIi5aiy/file171e760feb6c...
#>  No schedule set, using Rmd files in episodes/ directory.
#> → Creating Lesson in /tmp/RtmpIi5aiy/file171e760feb6c...

#> To remove this message, define your schedule in config.yaml or use `set_episodes()` to generate it.
#> → Creating Lesson in /tmp/RtmpIi5aiy/file171e760feb6c...

#> ────────────────────────────────────────────────────────────────────────
#> → Creating Lesson in /tmp/RtmpIi5aiy/file171e760feb6c...

#>  To save this configuration, use
#> 
#> set_episodes(path = path, order = ep, write = TRUE)
#> → Creating Lesson in /tmp/RtmpIi5aiy/file171e760feb6c...

#>  First episode created in /tmp/RtmpIi5aiy/file171e760feb6c/episodes/introduction.Rmd
#> → Creating Lesson in /tmp/RtmpIi5aiy/file171e760feb6c...

#>  Workflows up-to-date!
#> → Creating Lesson in /tmp/RtmpIi5aiy/file171e760feb6c...

#>  Consent to use package cache provided
#> → Creating Lesson in /tmp/RtmpIi5aiy/file171e760feb6c...

#> → Searching for and installing available dependencies
#> * Discovering package dependencies ... Done!
#> The following packages were discovered:
#> 
#> # ~/work/_temp/Library ===============
#> - R6            2.5.1
#> - base64enc     0.1-3
#> - bslib         0.5.0
#> - cachem        1.0.8
#> - cli           3.6.1
#> - digest        0.6.32
#> - ellipsis      0.3.2
#> - evaluate      0.21
#> - fastmap       1.1.1
#> - fontawesome   0.5.1
#> - fs            1.6.2
#> - glue          1.6.2
#> - highr         0.10
#> - htmltools     0.5.5
#> - jquerylib     0.1.4
#> - jsonlite      1.8.7
#> - knitr         1.43
#> - lifecycle     1.0.3
#> - magrittr      2.0.3
#> - memoise       2.0.1
#> - mime          0.12
#> - rappdirs      0.3.3
#> - rlang         1.1.1
#> - rmarkdown     2.23
#> - sass          0.4.6
#> - stringi       1.7.12
#> - stringr       1.5.0
#> - tinytex       0.45
#> - vctrs         0.6.3
#> - xfun          0.39
#> - yaml          2.3.7
#> 
#> They will be copied into the project library.
#> 
#> * Copying packages into the project library ... Done!
#> * Hydrated 31 packages in 0.23 seconds.
#> → Recording changes in lockfile
#> The version of R recorded in the lockfile will be updated:
#> - R             [* -> 4.3.1]
#> 
#> The following package(s) will be updated in the lockfile:
#> 
#> # RSPM ===============================
#> - R6            [* -> 2.5.1]
#> - base64enc     [* -> 0.1-3]
#> - bslib         [* -> 0.5.0]
#> - cachem        [* -> 1.0.8]
#> - cli           [* -> 3.6.1]
#> - digest        [* -> 0.6.32]
#> - ellipsis      [* -> 0.3.2]
#> - evaluate      [* -> 0.21]
#> - fastmap       [* -> 1.1.1]
#> - fontawesome   [* -> 0.5.1]
#> - fs            [* -> 1.6.2]
#> - glue          [* -> 1.6.2]
#> - highr         [* -> 0.10]
#> - htmltools     [* -> 0.5.5]
#> - jquerylib     [* -> 0.1.4]
#> - jsonlite      [* -> 1.8.7]
#> - knitr         [* -> 1.43]
#> - lifecycle     [* -> 1.0.3]
#> - magrittr      [* -> 2.0.3]
#> - memoise       [* -> 2.0.1]
#> - mime          [* -> 0.12]
#> - rappdirs      [* -> 0.3.3]
#> - renv          [* -> 0.17.3]
#> - rlang         [* -> 1.1.1]
#> - rmarkdown     [* -> 2.23]
#> - sass          [* -> 0.4.6]
#> - stringi       [* -> 1.7.12]
#> - stringr       [* -> 1.5.0]
#> - tinytex       [* -> 0.45]
#> - vctrs         [* -> 0.6.3]
#> - xfun          [* -> 0.39]
#> - yaml          [* -> 2.3.7]
#> 
#> * Lockfile written to '/tmp/RtmpIi5aiy/file171e760feb6c/renv/profiles/lesson-requirements/renv.lock'.
#>  Lesson successfully created in /tmp/RtmpIi5aiy/file171e760feb6c
#> → Creating Lesson in /tmp/RtmpIi5aiy/file171e760feb6c...

lsn
#> /tmp/RtmpIi5aiy/file171e760feb6c