summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorMurilo Ijanc <[email protected]>2026-07-26 12:42:37 -0300
committerMurilo Ijanc <[email protected]>2026-07-26 12:42:37 -0300
commit11d49bc25eb1643f1b742f9527212d8781f2e0de (patch)
treebae1cb090cbf6c9f82ab5abbaf1194206f92f539 /Makefile
downloadr-0.1.0.tar.gz
Initial importv0.1.0
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile59
1 files changed, 59 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..955f76e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,59 @@
+# Development tasks. Everything runs through `R`, so there is nothing to
+# install first beyond the two runtime dependencies (curl, jsonlite) and
+# roxygen2 for `make document`.
+#
+# make list the targets
+# make test install into check/lib and run tests/
+# make lint parse every file + codetools, no files touched
+# make build build the source tarball
+R ?= R
+RSCRIPT ?= Rscript
+
+PKG := cepis
+VERSION := $(shell awk '/^Version:/ { print $$2 }' DESCRIPTION)
+TARBALL := $(PKG)_$(VERSION).tar.gz
+LIB := $(CURDIR)/check/lib
+
+.DEFAULT_GOAL := help
+.PHONY: help install test lint document build check check-cran clean
+
+help:
+ @echo 'Targets:'
+ @echo ' test install into check/lib and run every tests/test-*.R'
+ @echo ' lint parse the sources + codetools::checkUsagePackage (read-only)'
+ @echo ' document regenerate man/ and NAMESPACE with roxygen2 (writes)'
+ @echo ' build build $(TARBALL)'
+ @echo ' check lint + test + build, in that order'
+ @echo ' check-cran build, then R CMD check the tarball'
+ @echo ' clean remove build and check artefacts'
+
+install:
+ @mkdir -p $(LIB)
+ $(R) CMD INSTALL --library=$(LIB) .
+
+test: install
+ @cd tests && for file in test-*.R; do \
+ echo "==> $$file"; \
+ R_LIBS=$(LIB) $(RSCRIPT) "$$file" || exit 1; \
+ done
+
+# Read-only by design, so it is safe in CI and in a pre-commit hook.
+lint: install
+ @R_LIBS=$(LIB) $(RSCRIPT) -e 'for (f in list.files(c("R", "tests"), pattern = "[.]R$$", recursive = TRUE, full.names = TRUE)) invisible(parse(f)); cat("parsed\n")'
+ @R_LIBS=$(LIB) $(RSCRIPT) -e 'suppressMessages(library($(PKG))); codetools::checkUsagePackage("$(PKG)", suppressLocalUnused = TRUE); cat("checked\n")'
+
+document:
+ $(RSCRIPT) -e 'roxygen2::roxygenise(load_code = "source")'
+
+build:
+ $(R) CMD build .
+
+# The order matters: lint is the fastest to fail, build the slowest, so a
+# broken run reports the cheapest problem first.
+check: lint test build
+
+check-cran: build
+ $(R) CMD check --no-manual $(TARBALL)
+
+clean:
+ rm -rf check $(PKG).Rcheck *.tar.gz