cbindlist, mergelist #496
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
name: code-quality | |
jobs: | |
lint-r: | |
runs-on: ubuntu-latest | |
env: | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: r-lib/actions/setup-r@v2 | |
with: | |
use-public-rspm: true | |
- uses: r-lib/actions/setup-r-dependencies@v2 | |
with: | |
extra-packages: | | |
r-lib/lintr | |
local::. | |
needs: lint | |
- name: Lint | |
run: lintr::lint_package(pattern = "(?i)[.](r|rmd)$") # TODO(#5830): use the default pattern | |
shell: Rscript {0} | |
env: | |
LINTR_ERROR_ON_LINT: true | |
R_LINTR_LINTER_FILE: .ci/.lintr | |
lint-c: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: r-lib/actions/setup-r@v2 | |
- name: Lint | |
run: | | |
linter_env = new.env() | |
for (f in list.files('.ci/linters/c', full.names=TRUE)) sys.source(f, linter_env) | |
for (f in list.files('src', pattern='[.][ch]$', full.names=TRUE)) { | |
c_obj = list(path = f, lines = readLines(f)) | |
c_obj$preprocessed = system2("gcc", c("-fpreprocessed", "-E", f), stdout=TRUE, stderr=FALSE) | |
for (linter in ls(linter_env)) linter_env[[linter]](c_obj) | |
# TODO(#6272): Incorporate more checks from CRAN_Release | |
} | |
shell: Rscript {0} | |
lint-po: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: r-lib/actions/setup-r@v2 | |
- name: Check translations | |
run: | | |
setwd("po") | |
for (po_file in list.files(pattern = "[.]po$")) { | |
res = tools::checkPoFile(po_file, strictPlural=TRUE) | |
if (NROW(res)) { print(res); stop("Fix the above .po file issues.") } | |
if (!any(grepl("charset=UTF-8", readLines(po_file), fixed=TRUE))) | |
stop("In ", po_file, ", please use charset=UTF-8.") | |
res = system2("msgfmt", c("--statistics", po_file, "-o", tempfile()), stdout=TRUE, stderr=TRUE) | |
if (any(grepl("untranslated message|fuzzy translation", res))) { | |
cat(sprintf("In %s, found incomplete translations:\n%s\n", po_file, paste(res, collapse="\n"))) | |
stop("Please fix.") | |
} | |
} | |
cat("All translation quality checks completed successfully!\n") | |
shell: Rscript {0} | |
lint-md: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Lint | |
run: for (f in list.files('.ci/linters/md', full.names=TRUE)) source(f) | |
shell: Rscript {0} |