Skip to content

Commit c1e8856

Browse files
Sync styles first (#494)
Co-authored-by: Maxim Belkin <[email protected]>
1 parent 41d0e9a commit c1e8856

4 files changed

Lines changed: 55 additions & 73 deletions

File tree

.github/workflows/template.yml

Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ jobs:
1616
defaults:
1717
run:
1818
shell: bash # forces 'Git for Windows' on Windows
19+
env:
20+
RSPM: 'https://packagemanager.rstudio.com/cran/__linux__/bionic/latest'
1921
steps:
2022
- name: Set up Ruby
2123
uses: actions/setup-ruby@main
@@ -46,6 +48,26 @@ jobs:
4648
path: lesson
4749
fetch-depth: 0
4850

51+
- name: Determine the proper reference to use
52+
id: styles-ref
53+
run: |
54+
if [[ -n "${{ github.event.pull_request.number }}" ]]; then
55+
echo "::set-output name=ref::refs/pull/${{ github.event.pull_request.number }}/head"
56+
else
57+
echo "::set-output name=ref::gh-pages"
58+
fi
59+
60+
- name: Sync lesson with carpentries/styles
61+
working-directory: lesson
62+
run: |
63+
git config --global user.email "[email protected]"
64+
git config --global user.name "The Carpentries Bot"
65+
git remote add styles https://github.com/carpentries/styles.git
66+
git config --local remote.styles.tagOpt --no-tags
67+
git fetch styles ${{ steps.styles-ref.outputs.ref }}:styles-ref
68+
git merge -s recursive -Xtheirs --no-commit styles-ref
69+
git commit -m "Sync lesson with carpentries/styles"
70+
4971
- name: Look for R-markdown files
5072
id: check-rmd
5173
working-directory: lesson
@@ -61,7 +83,7 @@ jobs:
6183
- name: Install needed packages
6284
if: steps.check-rmd.outputs.count != 0
6385
run: |
64-
install.packages(c('remotes', 'rprojroot', 'renv', 'desc'))
86+
install.packages(c('remotes', 'rprojroot', 'renv', 'desc', 'rmarkdown', 'knitr'))
6587
shell: Rscript {0}
6688

6789
- name: Query dependencies
@@ -89,36 +111,8 @@ jobs:
89111
run: |
90112
while read -r cmd
91113
do
92-
eval $cmd
114+
eval sudo $cmd
93115
done < <(Rscript -e 'cat(remotes::system_requirements("ubuntu", "18.04"), sep = "\n")')
94116
95-
- name: Install R lessons package dependencies
96-
if: steps.check-rmd.outputs.count != 0
97-
working-directory: lesson
98-
run: |
99-
remotes::install_deps(dependencies = TRUE)
100-
file.remove("DESCRIPTION")
101-
shell: Rscript {0}
102-
103-
- name: Determine the proper reference to use
104-
id: styles-ref
105-
run: |
106-
if [[ -n "${{ github.event.pull_request.number }}" ]]; then
107-
echo "::set-output name=ref::refs/pull/${{ github.event.pull_request.number }}/head"
108-
else
109-
echo "::set-output name=ref::gh-pages"
110-
fi
111-
112-
- name: Sync lesson with carpentries/styles
113-
working-directory: lesson
114-
run: |
115-
git config --global user.email "[email protected]"
116-
git config --global user.name "The Carpentries Bot"
117-
git remote add styles https://github.com/carpentries/styles.git
118-
git config --local remote.styles.tagOpt --no-tags
119-
git fetch styles ${{ steps.styles-ref.outputs.ref }}:styles-ref
120-
git merge -s recursive -Xtheirs --no-commit styles-ref
121-
git commit -m "Sync lesson with carpentries/styles"
122-
123117
- run: make site
124118
working-directory: lesson

Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ endif
3232

3333

3434
# Controls
35-
.PHONY : commands clean files install-rmd-deps
35+
.PHONY : commands clean files
3636

3737
# Default target
3838
.DEFAULT_GOAL := commands
@@ -93,7 +93,7 @@ workshop-check :
9393
## III. Commands specific to lesson websites
9494
## =================================================
9595

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

9898
# RMarkdown files
9999
RMD_SRC = $(wildcard _episodes_rmd/??-*.Rmd)
@@ -121,12 +121,12 @@ HTML_DST = \
121121

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

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

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

bin/dependencies.R

Lines changed: 26 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
1-
find_root <- function() {
2-
if (!requireNamespace("rprojroot", quietly = TRUE)) {
3-
install.packages("rprojroot", lib = lib, repos = repos)
1+
install_required_packages <- function(lib = NULL, repos = getOption("repos")) {
2+
3+
if (is.null(lib)) {
4+
lib <- .libPaths()
45
}
56

7+
message("lib paths: ", paste(lib, collapse = ", "))
8+
missing_pkgs <- setdiff(
9+
c("rprojroot", "desc", "remotes", "renv"),
10+
rownames(installed.packages(lib.loc = lib))
11+
)
12+
13+
install.packages(missing_pkgs, lib = lib, repos = repos)
14+
15+
}
16+
17+
find_root <- function() {
18+
619
cfg <- rprojroot::has_file_pattern("^_config.y*ml$")
720
root <- rprojroot::find_root(cfg)
821

922
root
1023
}
1124

12-
identify_dependencies <- function(lib = NULL, repos = getOption("repos")) {
13-
14-
if (is.null(lib)) {
15-
lib <- .libPaths()
16-
}
17-
18-
if (!requireNamespace("renv", quietly = TRUE)) {
19-
install.packages("renv", lib = lib, repos = repos)
20-
}
25+
identify_dependencies <- function() {
2126

2227
root <- find_root()
2328

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

34-
install_dependencies <- function(required_pkgs,
35-
lib = NULL, repos = getOption("repos"),
36-
update = FALSE, ...) {
37-
38-
if (missing(lib)) {
39-
lib <- .libPaths()
40-
}
39+
create_description <- function(required_pkgs) {
40+
d <- desc::description$new("!new")
41+
lapply(required_pkgs, function(x) d$set_dep(x))
42+
d$write("DESCRIPTION")
43+
}
4144

42-
missing_pkgs <- setdiff(required_pkgs, rownames(installed.packages()))
45+
install_dependencies <- function(required_pkgs, ...) {
4346

44-
if (length(missing_pkgs)) {
45-
message("Installing missing required packages: ",
46-
paste(missing_pkgs, collapse=", "))
47-
install.packages(missing_pkgs, lib = lib, repos = repos)
48-
}
49-
50-
if (update) {
51-
update.packages(
52-
lib.loc = lib, repos = repos,
53-
ask = FALSE, checkBuilt = TRUE, ...
54-
)
55-
}
47+
create_description(required_pkgs)
48+
on.exit(file.remove("DESCRIPTION"))
49+
remotes::install_deps(dependencies = TRUE, ...)
5650

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

6155
}
62-
63-
create_description <- function(required_pkgs) {
64-
require("desc")
65-
d <- description$new("!new")
66-
lapply(required_pkgs, function(x) d$set_dep(x))
67-
d$write("DESCRIPTION")
68-
}

bin/install_r_deps.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Rscript -e "source(file.path('bin', 'dependencies.R')); install_required_packages(); install_dependencies(identify_dependencies())"

0 commit comments

Comments
 (0)