Skip to content

Commit

Permalink
Merge branch 'l2d' into carpentries-main
Browse files Browse the repository at this point in the history
  • Loading branch information
milanmlft authored Aug 5, 2024
2 parents 13778fc + e39765d commit 02afca8
Show file tree
Hide file tree
Showing 69 changed files with 3,152 additions and 424 deletions.
4 changes: 4 additions & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,7 @@

^doc$
^Meta$

^\.vscode$
^dev$
^\.renovaterc\.json5$
10 changes: 10 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "${localWorkspaceFolderBasename}",
"image": "ghcr.io/rocker-org/devcontainer/r-ver:4.3",
"mounts": [
"source=${localEnv:HOME}/.gitignore_global,target=/home/rstudio/.gitignore_global,readonly",
"source=${localEnv:HOME}/.gitconfig,target=/home/rstudio/.gitconfig,readonly",
"source=${localEnv:HOME}/.ssh,target=/home/rstudio/.ssh,readonly"
],
"postCreateCommand": "Rscript -e 'pak::local_install_dev_deps()'"
}
8 changes: 8 additions & 0 deletions .github/pull.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## Automatically sync fork with upstream
version: "1"
rules:
- base: carpentries-main
upstream: carpentries:main
mergeUnstable: false
label: ":arrow_heading_down: pull"
conflictLabel: "merge-conflict"
79 changes: 9 additions & 70 deletions .github/workflows/R-CMD-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
# usethis::use_github_action("check-standard") will install it.
on:
push:
branches: [main, master]
branches:
- main
- l2d
pull_request:
branches: [main, master]
branches: [main, master, l2d]
schedule:
- cron: '0 0 * * 2'
workflow_dispatch:
Expand All @@ -25,53 +27,21 @@ jobs:
fail-fast: false
matrix:
config:
- {os: macOS-latest, cache: '~/Library/Application Support/renv', r: 'release'}

- {os: windows-latest, r: 'release'}

# Use 3.6 to trigger usage of RTools35
# As of 2024-06, downlit now requires R >4.0.0 so this should be deprecated.
# - {os: windows-latest, cache: '~\AppData\Local\renv', r: '3.6'}

# use 4.1 to check with rtools40's older compiler
- {os: windows-latest, r: '4.1'}

- {os: ubuntu-latest, cache: '~/.local/share/renv', r: 'devel', http-user-agent: 'release'}
- {os: ubuntu-latest, cache: '~/.local/share/renv', r: 'release', cov: 'true'}
- {os: ubuntu-latest, cache: '~/.local/share/renv', r: 'oldrel-1'}
- {os: ubuntu-latest, cache: '~/.local/share/renv', r: 'oldrel-2'}
- {os: ubuntu-latest, cache: '~/.local/share/renv', r: 'oldrel-3'}
- {os: ubuntu-latest, cache: '~/.local/share/renv', r: 'oldrel-4'}
## Run CI only on ubuntu-latest as this is the os used to build lessons
- {os: ubuntu-latest, r: 'release', cov: 'true'}

env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
R_KEEP_PKG_SOURCE: yes
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
RENV_PATHS_ROOT: ${{ matrix.config.cache }}

steps:
- name: Record Linux Version
if: runner.os == 'Linux'
run: |
echo "OS_VERSION=`lsb_release -sr`" >> $GITHUB_ENV
mkdir -p "${{ runner.temp }}/sandbox/"
echo "RENV_PATHS_SANDBOX=${{ runner.temp }}/sandbox/" >> $GITHUB_ENV
- name: "Windows: prevent autocrlf"
if: runner.os == 'Windows'
run: git config --global core.autocrlf false
shell: bash

- uses: actions/checkout@v3
- uses: actions/checkout@v4

- uses: r-lib/actions/setup-pandoc@v2

- name: "Windows: setup TMPDIR"
if: runner.os == 'Windows'
run: |
git config --global core.autocrlf true # reset setting to prevent errors downstream
echo "TMPDIR=${{ runner.temp }}" >> $GITHUB_ENV
shell: bash
- name: "Set up Chrome" # for PDF rendering
uses: browser-actions/[email protected]

- name: "Setup R"
uses: r-lib/actions/setup-r@v2
Expand All @@ -86,25 +56,6 @@ jobs:
extra-packages: any::rcmdcheck
needs: check

- name: "Restore {renv} cache"
if: runner.os != 'Windows'
uses: actions/cache@v3
with:
path: ${{ env.RENV_PATHS_ROOT }}
key: ${{ runner.os }}-${{ env.OS_VERSION }}-renv-${{ runner.r }}-${{ hashFiles('.github/workflows/R-CMD-check.yaml') }}
restore-keys: |
${{ runner.os }}-${{ env.OS_VERSION }}-renv-${{ runner.r }}-
- name: "Prime {renv} Cache"
if: runner.os != 'Windows'
run: |
renv::settings$snapshot.type("explicit")
renv::init()
system('sudo rm -rf renv.lock renv .Rprofile')
system('git clean -fd -e .github')
system('git restore .')
shell: Rscript {0}

- name: "Session info"
run: |
options(width = 100)
Expand All @@ -114,17 +65,5 @@ jobs:

- name: "Check"
uses: r-lib/actions/check-r-package@v2
if: runner.os != 'Windows'
with:
upload-snapshots: true

- name: "Check"
uses: r-lib/actions/check-r-package@v2
if: runner.os == 'Windows'
env:
RENV_PATHS_ROOT: ~
with:
upload-snapshots: true



2 changes: 1 addition & 1 deletion .github/workflows/pkgdown.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- uses: r-lib/actions/setup-pandoc@v2

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-commands.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- uses: r-lib/actions/pr-fetch@v2
with:
Expand Down
27 changes: 6 additions & 21 deletions .github/workflows/test-coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
on:
push:
branches: [main, master]
branches: [main, master, l2d]
pull_request:
branches: [main, master]
branches: [main, master, l2d]
workflow_dispatch:

name: test-coverage
Expand All @@ -14,11 +14,10 @@ jobs:
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
RENV_PATHS_ROOT: ~/.local/share/renv
OS_VERSION: 1

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- uses: r-lib/actions/setup-r@v2
with:
Expand All @@ -27,6 +26,9 @@ jobs:
- name: "Set up pandoc"
uses: r-lib/actions/setup-pandoc@v2

- name: "Set up Chrome" # for PDF rendering
uses: browser-actions/[email protected]

- name: "Install sysreqs"
id: run-apt
shell: bash
Expand Down Expand Up @@ -57,23 +59,6 @@ jobs:
extra-packages: any::covr
needs: coverage

- name: Restore {renv} cache
uses: actions/cache@v3
with:
path: ${{ env.RENV_PATHS_ROOT }}
key: ${{ runner.os }}-${{ env.OS_VERSION }}-renv-${{ runner.r }}-${{ hashFiles('.github/workflows/R-CMD-check.yaml') }}
restore-keys: |
${{ runner.os }}-${{ env.OS_VERSION }}-renv-${{ runner.r }}-
- name: Prime {renv} Cache
run: |
renv::settings$snapshot.type("explicit")
renv::init()
system('rm -rf renv .Rprofile')
system('git clean -fd -e .github')
system('git restore .')
shell: Rscript {0}

- name: Test coverage
run: |
covr::codecov(
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/update-dots.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Render Dotfiles

on:
push:
paths:
paths:
- vignettes/articles/img/*dot
- .github/workflows/update-docs.yaml

Expand All @@ -11,8 +11,8 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2.5.0
- uses: actions/checkout@v4

- name: Setup Graphviz
uses: ts-graphviz/setup-graphviz@v1

Expand Down
5 changes: 5 additions & 0 deletions .renovaterc.json5
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["github>UCL-ARC/.github//renovate/default-config.json"],
"reviewers": ["milanmlft"]
}
18 changes: 12 additions & 6 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: sandpaper
Title: Create and Curate Carpentries Lessons
Version: 0.16.5
Version: 0.16.5.90000-1
Authors@R: c(
person(given = "Robert",
family = "Davey",
Expand Down Expand Up @@ -61,6 +61,7 @@ Description: We provide tools to build a Carpentries-themed lesson repository
those designed to be used in a continuous integration context so that all the
lesson author needs to focus on is writing the content of the actual lesson.
License: MIT + file LICENSE
Depends: R (>= 4.0)
Imports:
pkgdown (>= 1.6.0),
pegboard (>= 0.7.0),
Expand All @@ -85,7 +86,8 @@ Imports:
callr,
servr,
utils,
tools
tools,
pagedown,
Suggests:
testthat (>= 3.0.0),
covr,
Expand All @@ -96,11 +98,15 @@ Suggests:
jsonlite,
sessioninfo,
mockr,
varnish (>= 0.3.0)
varnish (>= 0.3.0),
reticulate,
jupytextR (>= 0.1.0),
BiocManager
Additional_repositories: https://carpentries.r-universe.dev/
Remotes:
carpentries/pegboard,
carpentries/varnish
carpentries/pegboard,
LearnToDiscover/varnish,
milanmlft/jupytextR
SystemRequirements: pandoc (>= 2.11.4) - https://pandoc.org
Encoding: UTF-8
LazyData: true
Expand All @@ -109,7 +115,7 @@ Config/testthat/parallel: false
Config/Needs/check: rstudio/renv
Config/potools/style: explicit
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.2.3
RoxygenNote: 7.3.1
URL: https://carpentries.github.io/sandpaper/, https://github.com/carpentries/sandpaper/, https://carpentries.github.io/workbench/
BugReports: https://github.com/carpentries/sandpaper/issues/
VignetteBuilder: knitr
3 changes: 3 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export(move_episode)
export(no_package_cache)
export(package_cache_trigger)
export(pin_version)
export(py_install)
export(renv_diagnostics)
export(reset_episodes)
export(reset_site)
Expand All @@ -37,6 +38,7 @@ export(set_instructors)
export(set_learners)
export(set_profiles)
export(strip_prefix)
export(template_citation)
export(template_conduct)
export(template_config)
export(template_contributing)
Expand All @@ -55,6 +57,7 @@ export(update_cache)
export(update_github_workflows)
export(update_varnish)
export(use_package_cache)
export(use_python)
export(validate_lesson)
export(work_with_cache)
importFrom(assertthat,validate_that)
Expand Down
42 changes: 42 additions & 0 deletions R/build_episode.R
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ get_nav_data <- function(path_md, path_src = NULL, home = NULL,
minutes = as.integer(yaml$teaching) + as.integer(yaml$exercises),
file_source = fs::path_rel(path_src, start = home),
this_page = fs::path_file(this_page),
this_page_pdf = fs::path_file(as_pdf(this_page)),
page_back = page_back,
back_title = pb_title,
page_forward = page_forward,
Expand Down Expand Up @@ -206,6 +207,7 @@ build_episode_md <- function(path, hash = NULL, outdir = path_built(path),
md <- fs::path_ext_set(fs::path_file(path), "md")
outpath <- fs::path(outdir, md)

# Set up the arguments
# shortcut if we have a markdown file
if (file_ext(path) == "md") {
file.copy(path, outpath, overwrite = TRUE)
Expand Down Expand Up @@ -233,7 +235,9 @@ build_episode_md <- function(path, hash = NULL, outdir = path_built(path),
# ==========================================================
#
# Note that this process can NOT use any internal functions

sho <- !(quiet || identical(Sys.getenv("TESTTHAT"), "true"))

callr::r(
func = callr_build_episode_md,
args = args,
Expand All @@ -246,3 +250,41 @@ build_episode_md <- function(path, hash = NULL, outdir = path_built(path),

invisible(outpath)
}


#' Convert a single episode to a Jupyter notebook
#'
#' @param path path to the RMarkdown file.
#' @param outdir the directory to write to/
#' @param quiet if `TRUE`, output is suppressed, default is `TRUE` so we can use better
#' formatting elsewhere.
#'
#' @return the path to the output, invisibly
#' @keywords internal
build_episode_ipynb <- function(path, outdir = path_built(path),
profile = "lesson-requirements", quiet = TRUE) {

if (!rlang::is_installed("jupytextR", version = "0.1.0")) {
rlang::inform("jupytextR is not installed, attempting to install it.")
BiocManager::install("milanmlft/jupytextR")
}

outfile <- fs::path_ext_set(fs::path_file(path), "ipynb")
outpath <- fs::path(outdir, outfile)

args <- list(input = path, output = outpath, quiet = quiet)
sho <- !(quiet || identical(Sys.getenv("TESTTHAT"), "true"))

callr::r(
func = function(input, output, quiet) {
jupytextR::jupytext(input = input, to = "ipynb", output = output, quiet = quiet)
},
args = args,
show = !quiet,
spinner = sho,
env = c(callr::rcmd_safe_env(),
"RENV_PROFILE" = profile,
"RENV_CONFIG_CACHE_SYMLINKS" = renv_cache_available())
)
invisible(outpath)
}
Loading

0 comments on commit 02afca8

Please sign in to comment.