Functions to download and unpack a ZIP file into a local folder of files, with very intentional default behaviour. Useful in pedagogical settings or anytime you need a large audience to download a set of files quickly and actually be able to find them. The underlying helpers are documented in use_course_details.

## Usage

use_course(url, destdir = getOption("usethis.destdir"))

use_zip(
url,
destdir = getwd(),
cleanup = if (rlang::is_interactive()) NA else FALSE
)

## Arguments

url

Link to a ZIP file containing the materials. To reduce the chance of typos in live settings, these shorter forms are accepted:

* GitHub repo spec: "OWNER/REPO". Equivalent to
https://github.com/OWNER/REPO/DEFAULT_BRANCH.zip.
* bit.ly or rstd.io shortlinks: "bit.ly/xxx-yyy-zzz" or "rstd.io/foofy".
The instructor must then arrange for the shortlink to point to a valid

destdir

The new folder is stored here. If NULL, defaults to user's Desktop or some other conspicuous place. You can also set a default location using the option usethis.destdir, e.g. options(usethis.destdir = "a/good/dir"), perhaps saved to your .Rprofile with edit_r_profile()

cleanup

Whether to delete the original ZIP file after unpacking its contents. In an interactive setting, NA leads to a menu where user can approve the deletion (or decline).

## Value

Path to the new directory holding the unpacked ZIP file, invisibly.

## Functions

• use_course: Designed with live workshops in mind. Includes intentional friction to highlight the download destination. Workflow:

• User executes, e.g., use_course("bit.ly/xxx-yyy-zzz").

• User is asked to notice and confirm the location of the new folder. Specify destdir or configure the "usethis.destdir" option to prevent this.

• User is asked if they'd like to delete the ZIP file.

• If new folder contains an .Rproj file, a new instance of RStudio is launched. Otherwise, the folder is opened in the file manager, e.g. Finder or File Explorer.

• use_zip: More useful in day-to-day work. Downloads in current working directory, by default, and allows cleanup behaviour to be specified.

## Examples

if (FALSE) {

use_course("https://cran.r-project.org/bin/windows/contrib/3.4/rematch2_2.0.1.zip")

use_course("r-lib/rematch2")
use_course("https://api.github.com/repos/r-lib/rematch2/zipball/main")
use_course("https://github.com/r-lib/rematch2/archive/main.zip")
}