If you need to move a single episode, this function gives you a programmatic or interactive interface to accomplishing this task, whether you need to add and episode, draft, or remove an episode from the schedule.
Arguments
- ep
the name of a draft episode or the name/number of a published episode to move.
- position
the position in the schedule to move the episode. Valid positions are from 0 to the number of episodes (+1 for drafts). A value of 0 indicates that the episode should be removed from the schedule.
- write
defaults to
FALSE
, which will show the potential changes. IfTRUE
, the schedule will be modified and written toconfig.yaml
- path
the path to the lesson (defaults to the current working directory)
Examples
if (interactive() || Sys.getenv("CI") != "") {
tmp <- tempfile()
create_lesson(tmp)
create_episode_md("getting-started", path = tmp)
create_episode_rmd("plotting", path = tmp)
create_episode_md("experimental", path = tmp, add = FALSE)
set_episodes(tmp, c("getting-started.md", "introduction.Rmd", "plotting.Rmd"),
write = TRUE)
# Default episode order is alphabetical, we can use this to nudge episodes
get_episodes(tmp)
move_episode("introduction.Rmd", 1L, path = tmp) # by default, it shows you the change
move_episode("introduction.Rmd", 1L, write = TRUE, path = tmp) # write the results
get_episodes(tmp)
# Add episodes from the drafts
get_drafts(tmp)
move_episode("experimental.md", 2L, path = tmp) # view where it will live
move_episode("experimental.md", 2L, write = TRUE, path = tmp)
get_episodes(tmp)
# Unpublish episodes by setting position to zero
move_episode("experimental.md", 0L, path = tmp) # view the results
move_episode("experimental.md", 0L, write = TRUE, path = tmp)
get_episodes(tmp)
# Interactively select the position where the episode should go by omitting
# the position argument
if (interactive()) {
move_episode("experimental.md", path = tmp)
}
}
#> → Creating Lesson in /tmp/RtmpsPBux1/file1a885fe3f915...
#> ℹ No schedule set, using Rmd files in episodes/ directory.
#> → Creating Lesson in /tmp/RtmpsPBux1/file1a885fe3f915...
#> → To remove this message, define your schedule in config.yaml or use `set_episodes()` to generate it.
#> → Creating Lesson in /tmp/RtmpsPBux1/file1a885fe3f915...
#> ────────────────────────────────────────────────────────────────────────
#> → Creating Lesson in /tmp/RtmpsPBux1/file1a885fe3f915...
#> ℹ To save this configuration, use
#>
#> set_episodes(path = path, order = ep, write = TRUE)
#> → Creating Lesson in /tmp/RtmpsPBux1/file1a885fe3f915...
#> ✔ First episode created in /tmp/RtmpsPBux1/file1a885fe3f915/episodes/introduction.Rmd
#> → Creating Lesson in /tmp/RtmpsPBux1/file1a885fe3f915...
#> ℹ Workflows up-to-date!
#> → Creating Lesson in /tmp/RtmpsPBux1/file1a885fe3f915...
#> ℹ Consent to use package cache provided
#> → Creating Lesson in /tmp/RtmpsPBux1/file1a885fe3f915...
#> → Searching for and installing available dependencies
#> * Discovering package dependencies ... Done!
#> * Copying packages into the library ... Done!
#> → Recording changes in lockfile
#> The following package(s) will be updated in the lockfile:
#>
#> # RSPM ===============================
#> - R6 [* -> 2.5.1]
#> - base64enc [* -> 0.1-3]
#> - bslib [* -> 0.4.2]
#> - cachem [* -> 1.0.6]
#> - cli [* -> 3.6.0]
#> - digest [* -> 0.6.31]
#> - ellipsis [* -> 0.3.2]
#> - evaluate [* -> 0.20]
#> - fastmap [* -> 1.1.0]
#> - fs [* -> 1.6.0]
#> - glue [* -> 1.6.2]
#> - highr [* -> 0.10]
#> - htmltools [* -> 0.5.4]
#> - jquerylib [* -> 0.1.4]
#> - jsonlite [* -> 1.8.4]
#> - knitr [* -> 1.42]
#> - lifecycle [* -> 1.0.3]
#> - magrittr [* -> 2.0.3]
#> - memoise [* -> 2.0.1]
#> - mime [* -> 0.12]
#> - rappdirs [* -> 0.3.3]
#> - renv [* -> 0.16.0]
#> - rlang [* -> 1.0.6]
#> - rmarkdown [* -> 2.20]
#> - sass [* -> 0.4.5]
#> - stringi [* -> 1.7.12]
#> - stringr [* -> 1.5.0]
#> - tinytex [* -> 0.43]
#> - vctrs [* -> 0.5.2]
#> - xfun [* -> 0.36]
#> - yaml [* -> 2.3.7]
#>
#> The version of R recorded in the lockfile will be updated:
#> - R [*] -> [4.2.2]
#>
#> * Lockfile written to '/tmp/RtmpsPBux1/file1a885fe3f915/renv/profiles/lesson-requirements/renv.lock'.
#> ✔ Lesson successfully created in /tmp/RtmpsPBux1/file1a885fe3f915
#> → Creating Lesson in /tmp/RtmpsPBux1/file1a885fe3f915...
#> episodes:
#> - introduction.Rmd
#> - getting-started.md
#> - plotting.Rmd
#>
#> ────────────────────────────────────────────────────────────────────────
#> ℹ To save this configuration, use
#>
#> move_episode(ep = "introduction.Rmd", position = 1, path = tmp, write = TRUE)
#> ℹ Files are in draft: episodes/experimental.md
#> ℹ All files in learners/ published (config.yaml empty)
#> ℹ All files in instructors/ published (config.yaml empty)
#> ℹ All files in profiles/ published (config.yaml empty)
#> episodes:
#> - introduction.Rmd
#> - experimental.md
#> - getting-started.md
#> - plotting.Rmd
#>
#> ────────────────────────────────────────────────────────────────────────
#> ℹ To save this configuration, use
#>
#> move_episode(ep = "experimental.md", position = 2, path = tmp, write = TRUE)
#> episodes:
#> - introduction.Rmd
#> - getting-started.md
#> - plotting.Rmd
#>
#> ── Removed episodes ────────────────────────────────────────────────────
#> - experimental.md
#> ────────────────────────────────────────────────────────────────────────
#> ℹ To save this configuration, use
#>
#> move_episode(ep = "experimental.md", position = 0, path = tmp, write = TRUE)