Turn R scripts into terminal screencasts
asciicast takes an R script and turns it into an asciinema cast. It can simulate typing, and records all terminal output in real time as it happens.
asciicast-demo
vignette.inst/examples
or the README.Rmd
source of the README file you are reading.You can install the released version of asciicast from CRAN:
install.packages("asciicast")
See the inst/examples
directory for these examples.
The input script:
print("Hello world!")
The result:
Input script that uses asciicast itself:
#' Title: asciicast example recorded in asciicast
#' Empty_wait: 3
#' End_wait: 20
# An example for using asciicast, recorded in asciicast itself! #!
# First, save the R code you want to run, in a script file. #!
# The file can contain any code, including interactive code, #!
# as long as it is a syntactically valid R file. #!
# Second, perform the recording with the `record()` function. #!
# We are recording an example file now, that comes with the package. #!
<- system.file("examples", "hello.R", package = "asciicast")
src <- asciicast::record(src)
cast
# `cast` is an `asciicast` object, which has some metadata and the #!
# recording itself: #!
cast
# You can write `cast` to a JSON file that can be played by any #!
# asciinema player. Or you can write it to an SVG file that can #!
# be embedded into a web page, or a GitHub README. #!
<- tempfile(fileext = ".svg")
svg ::write_svg(cast, svg, window = TRUE) asciicast
Input script with errors:
#' End_wait: 20
# Demonstrate that errors are handled well
# Base R error
library("not-this-really")
traceback()
# callr errors are saved to `.Last.error`, including a stack trace
library(cli)
::r(function() library("another-failure"))
callr .Last.error
MIT @ RStudio