Skip to content

Commit

Permalink
Sync styles first (#494)
Browse files Browse the repository at this point in the history
Co-authored-by: Maxim Belkin <maxim.belkin@gmail.com>
  • Loading branch information
fmichonneau and maxim-belkin committed Aug 22, 2020
1 parent 41d0e9a commit c1e8856
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 73 deletions.
54 changes: 24 additions & 30 deletions .github/workflows/template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ jobs:
defaults:
run:
shell: bash # forces 'Git for Windows' on Windows
env:
RSPM: 'https://packagemanager.rstudio.com/cran/__linux__/bionic/latest'
steps:
- name: Set up Ruby
uses: actions/setup-ruby@main
Expand Down Expand Up @@ -46,6 +48,26 @@ jobs:
path: lesson
fetch-depth: 0

- name: Determine the proper reference to use
id: styles-ref
run: |
if [[ -n "${{ github.event.pull_request.number }}" ]]; then
echo "::set-output name=ref::refs/pull/${{ github.event.pull_request.number }}/head"
else
echo "::set-output name=ref::gh-pages"
fi
- name: Sync lesson with carpentries/styles
working-directory: lesson
run: |
git config --global user.email "team@carpentries.org"
git config --global user.name "The Carpentries Bot"
git remote add styles https://github.com/carpentries/styles.git
git config --local remote.styles.tagOpt --no-tags
git fetch styles ${{ steps.styles-ref.outputs.ref }}:styles-ref
git merge -s recursive -Xtheirs --no-commit styles-ref
git commit -m "Sync lesson with carpentries/styles"
- name: Look for R-markdown files
id: check-rmd
working-directory: lesson
Expand All @@ -61,7 +83,7 @@ jobs:
- name: Install needed packages
if: steps.check-rmd.outputs.count != 0
run: |
install.packages(c('remotes', 'rprojroot', 'renv', 'desc'))
install.packages(c('remotes', 'rprojroot', 'renv', 'desc', 'rmarkdown', 'knitr'))
shell: Rscript {0}

- name: Query dependencies
Expand Down Expand Up @@ -89,36 +111,8 @@ jobs:
run: |
while read -r cmd
do
eval $cmd
eval sudo $cmd
done < <(Rscript -e 'cat(remotes::system_requirements("ubuntu", "18.04"), sep = "\n")')
- name: Install R lessons package dependencies
if: steps.check-rmd.outputs.count != 0
working-directory: lesson
run: |
remotes::install_deps(dependencies = TRUE)
file.remove("DESCRIPTION")
shell: Rscript {0}

- name: Determine the proper reference to use
id: styles-ref
run: |
if [[ -n "${{ github.event.pull_request.number }}" ]]; then
echo "::set-output name=ref::refs/pull/${{ github.event.pull_request.number }}/head"
else
echo "::set-output name=ref::gh-pages"
fi
- name: Sync lesson with carpentries/styles
working-directory: lesson
run: |
git config --global user.email "team@carpentries.org"
git config --global user.name "The Carpentries Bot"
git remote add styles https://github.com/carpentries/styles.git
git config --local remote.styles.tagOpt --no-tags
git fetch styles ${{ steps.styles-ref.outputs.ref }}:styles-ref
git merge -s recursive -Xtheirs --no-commit styles-ref
git commit -m "Sync lesson with carpentries/styles"
- run: make site
working-directory: lesson
8 changes: 4 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ endif


# Controls
.PHONY : commands clean files install-rmd-deps
.PHONY : commands clean files

# Default target
.DEFAULT_GOAL := commands
Expand Down Expand Up @@ -93,7 +93,7 @@ workshop-check :
## III. Commands specific to lesson websites
## =================================================

.PHONY : lesson-check lesson-md lesson-files lesson-fixme
.PHONY : lesson-check lesson-md lesson-files lesson-fixme install-rmd-deps

# RMarkdown files
RMD_SRC = $(wildcard _episodes_rmd/??-*.Rmd)
Expand Down Expand Up @@ -121,12 +121,12 @@ HTML_DST = \

## * install-rmd-deps : Install R packages dependencies to build the RMarkdown lesson
install-rmd-deps:
Rscript -e 'source("bin/dependencies.R"); install_dependencies(identify_dependencies())'
@${SHELL} bin/install_r_deps.sh

## * lesson-md : convert Rmarkdown files to markdown
lesson-md : ${RMD_DST}

_episodes/%.md: _episodes_rmd/%.Rmd install-rmd-dependencies
_episodes/%.md: _episodes_rmd/%.Rmd install-rmd-deps
@mkdir -p _episodes
@bin/knit_lessons.sh $< $@

Expand Down
65 changes: 26 additions & 39 deletions bin/dependencies.R
Original file line number Diff line number Diff line change
@@ -1,23 +1,28 @@
find_root <- function() {
if (!requireNamespace("rprojroot", quietly = TRUE)) {
install.packages("rprojroot", lib = lib, repos = repos)
install_required_packages <- function(lib = NULL, repos = getOption("repos")) {

if (is.null(lib)) {
lib <- .libPaths()
}

message("lib paths: ", paste(lib, collapse = ", "))
missing_pkgs <- setdiff(
c("rprojroot", "desc", "remotes", "renv"),
rownames(installed.packages(lib.loc = lib))
)

install.packages(missing_pkgs, lib = lib, repos = repos)

}

find_root <- function() {

cfg <- rprojroot::has_file_pattern("^_config.y*ml$")
root <- rprojroot::find_root(cfg)

root
}

identify_dependencies <- function(lib = NULL, repos = getOption("repos")) {

if (is.null(lib)) {
lib <- .libPaths()
}

if (!requireNamespace("renv", quietly = TRUE)) {
install.packages("renv", lib = lib, repos = repos)
}
identify_dependencies <- function() {

root <- find_root()

Expand All @@ -31,38 +36,20 @@ identify_dependencies <- function(lib = NULL, repos = getOption("repos")) {
required_pkgs
}

install_dependencies <- function(required_pkgs,
lib = NULL, repos = getOption("repos"),
update = FALSE, ...) {

if (missing(lib)) {
lib <- .libPaths()
}
create_description <- function(required_pkgs) {
d <- desc::description$new("!new")
lapply(required_pkgs, function(x) d$set_dep(x))
d$write("DESCRIPTION")
}

missing_pkgs <- setdiff(required_pkgs, rownames(installed.packages()))
install_dependencies <- function(required_pkgs, ...) {

if (length(missing_pkgs)) {
message("Installing missing required packages: ",
paste(missing_pkgs, collapse=", "))
install.packages(missing_pkgs, lib = lib, repos = repos)
}

if (update) {
update.packages(
lib.loc = lib, repos = repos,
ask = FALSE, checkBuilt = TRUE, ...
)
}
create_description(required_pkgs)
on.exit(file.remove("DESCRIPTION"))
remotes::install_deps(dependencies = TRUE, ...)

if (require("knitr") && packageVersion("knitr") < '1.9.19') {
stop("knitr must be version 1.9.20 or higher")
}

}

create_description <- function(required_pkgs) {
require("desc")
d <- description$new("!new")
lapply(required_pkgs, function(x) d$set_dep(x))
d$write("DESCRIPTION")
}
1 change: 1 addition & 0 deletions bin/install_r_deps.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Rscript -e "source(file.path('bin', 'dependencies.R')); install_required_packages(); install_dependencies(identify_dependencies())"

0 comments on commit c1e8856

Please sign in to comment.